Fork me on GitHub

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

posted @   晨度  阅读(1177)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示