java 16进制数据递增

  • 基本思路
String hex="ff"
String binString = hex -> bin
String addBinString = binString + N
String resultHex = addBinString  -> hex
return resultHex
  • 转换方法
 //16->2
    public static String hexString2binaryString(String hexString) {
        if (hexString.length() % 2 != 0) {
            hexString = "0" + hexString;
        }
        String bString = "", tmp;
        for (int i = 0; i < hexString.length(); i++) {
            tmp = "0000" + Integer.toBinaryString(Integer.parseInt(hexString.substring(i, i + 1), 16));
            bString += tmp.substring(tmp.length() - 4);
        }
        return bString;
    }

    //2->16
    public static String binaryString2hexString(String bString) {
        if (bString.length() % 8 != 0) {
            String sbuwei = "00000000";
            bString = sbuwei.substring(0, sbuwei.length() - bString.length() % 8) + bString;
        }
        StringBuilder tmp = new StringBuilder();
        int iTmp = 0;
        for (int i = 0; i < bString.length(); i += 4) {
            iTmp = 0;
            for (int j = 0; j < 4; j++) {
                iTmp += Integer.parseInt(bString.substring(i + j, i + j + 1)) << (4 - j - 1);
            }
            tmp.append(Integer.toHexString(iTmp));
        }
        return tmp.toString();
    }

    public String addBinary(String a, String b) {
        int carry = 0;
        int sum = 0;
        int opa = 0;
        int opb = 0;
        StringBuilder result = new StringBuilder();
        while (a.length() != b.length()) {
            if (a.length() > b.length()) {
                b = "0" + b;
            } else {
                a = "0" + a;
            }
        }
        for (int i = a.length() - 1; i >= 0; i--) {
            opa = a.charAt(i) - '0';
            opb = b.charAt(i) - '0';
            sum = opa + opb + carry;
            if (sum >= 2) {
                result.append((char) (sum - 2 + '0'));
                carry = 1;
            } else {
                result.append((char) (sum + '0'));
                carry = 0;
            }
        }
        if (carry == 1) {
            result.append("1");
        }
        return result.reverse().toString();
    }
  • 调用代码
        String hexString = "00010203040506070809aabbccddeeff";
        String binaryString = hexString2binaryString(hexString);
        for (int i = 0; i < 10; i++) {
            String addBinaryString = addBinary(binaryString, hexString2binaryString(String.valueOf(i)));
            String addHexString = binaryString2hexString(addBinaryString);
            System.out.println(addHexString);
        }
  • 执行结果
00010203040506070809aabbccddeeff
00010203040506070809aabbccddef00
00010203040506070809aabbccddef01
00010203040506070809aabbccddef02
00010203040506070809aabbccddef03
00010203040506070809aabbccddef04
00010203040506070809aabbccddef05
00010203040506070809aabbccddef06
00010203040506070809aabbccddef07
00010203040506070809aabbccddef08
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    叶总韩阅读 5,161评论 0 41
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,410评论 0 6
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,894评论 0 2