zoukankan      html  css  js  c++  java
  • 16进制字符串和byte数组进行相互转换将10进制转换为任意进制

    16进制字符串和byte数组进行相互转换

    简介

    1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位。

    JAVA代码

    private static final char HexCharArr[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
    
        private static final String HexStr = "0123456789abcdef";
    
        //字节数组转成16进制字符串
        public static String byteArrToHex(byte[] btArr) {
            char strArr[] = new char[btArr.length * 2];
            int i = 0;
            for (byte bt : btArr) {
                strArr[i++] = HexCharArr[bt>>>4 & 0xf];
                strArr[i++] = HexCharArr[bt & 0xf];
            }
            return new String(strArr);
        }
        //16进制字符串转成字节数组
        public static byte[] hexToByteArr(String hexStr) {
            char[] charArr = hexStr.toCharArray();
            byte btArr[] = new byte[charArr.length / 2];
            int index = 0;
            for (int i = 0; i < charArr.length; i++) {
                int highBit = HexStr.indexOf(charArr[i]);
                int lowBit = HexStr.indexOf(charArr[++i]);
                btArr[index] = (byte) (highBit << 4 | lowBit);
                index++;
            }
            return btArr;
        }
    

    Gitee地址

    https://gitee.com/zhuayng/foundation-study/tree/develop/JavaBasis/Other/src/main/java/com/yxkj/other/modular/byteandchar

    参考

    https://www.cnblogs.com/zhaoyue1215/p/10449530.html

    将10进制转换为任意进制

    简介

    此针对的是int类型或Long类型

    • 思路

    1、十进制数 num 转换为 n进制
    num%n结果肯定为n进制数的最后一位
    结果存入一个数组中
    2、进入一个循环num!=0时候
    num=num/n
    重复1的操作
    将倒数第二位、倒数第三位。。。到最终结果存入数组
    3、遍历数组从 count到0

    JAVA代码

     public  char[] transform(int num, int n) {
            int[] c=new int[100];
            int b=-1;
            while (num!=0) {
                b++;
                int a=num%n;
                num=num/n;
                c[b]=a;
    
            }
            char[] d=new char[1024];
            int e=-1;
            //注意 int转成char  char获取的是int的ASCII码值
            for (int f=0;f<=b;f++) {
                e++;
                if (c[f]>9){
                    //A对应2进制为65 ,对应10进制为10 ,故10进制的10转为16进制 在10进制上加上65-10=55
                    char c1 = (char) (c[f] + 55);
                    d[e]=c1;
                }else {
                    //10进制转为2进制,10进制的0对应2进制为48
                    char c1 = (char) (c[f]+48);
                    d[e]=c1;
                }
    
            }
            return d;
        }
        @Test
        public void Test() {
            // 测试用例
            Transformation t = new Transformation();
            char[] transform = t.transform(314154363, 16);
            System.out.println(transform);
    
        }
    

    Gitee代码地址

    https://gitee.com/zhuayng/foundation-study/tree/develop/JavaBasis/Other/src/main/java/com/yxkj/other/modular/coding

    XFS
  • 相关阅读:
    字符编码
    mahout 使用
    cloudera Manager使用总结
    HDFS 操作命令总结
    基于hive的日志分析系统
    hive 中的正则表达式
    hadoop 用户
    Java中设置classpath、path、JAVA_HOME的作用
    排序
    动手动脑
  • 原文地址:https://www.cnblogs.com/xiaofengshan/p/15224551.html
Copyright © 2011-2022 走看看