【问题标题】:Java Hex number increase by oneJava Hex 数字加一
【发布时间】:2014-05-13 16:15:30
【问题描述】:

我有一些自动生成的 id 表示为 HEX 字符串。我想找到接下来的 1000 个值。例如,假设我有以下字符串

String keyFrom = "536a11dae4b062cab536549d";

如何从 java 代码中获取以下内容到 String 中?

536a11dae4b062cab536549e 
536a11dae4b062cab536549f
536a11dae4b062cab53654a0 
536a11dae4b062cab53654a1
536a11dae4b062cab53654a2 ... etc.

【问题讨论】:

    标签: java arrays hex


    【解决方案1】:

    如下使用 BigInteger

    BigInteger decimal = new BigInteger("536a11dae4b062cab536549d",16);
            for ( int i=0;i<1000;i++){
                decimal = decimal.add(BigInteger.ONE);
                System.out.println(decimal.toString(16));
            }
    

    【讨论】:

      【解决方案2】:

      将您的 String 转换为 BigInteger 并递增:

      BigInteger bigInt = new BigInteger(hexString, 16);
      for(int i = 0 ; i < 1000 ; ++i) {
          // do something with bigInt...
          System.out.println(bigInt.toString(16));
          bigInt = bigInt.add(BigInteger.ONE);
      }
      

      【讨论】:

      • Nitpick:Q 要求接下来的 1000 个值;您打印原始值和下一个 999。
      • 哈哈是的。好吧,他可能必须自己进行更正:)
      【解决方案3】:

      编辑:如果您使用的十六进制字符串超过 ~8 个字符,请使用上面使用 BigInteger 的解决方案。

      使用 Integer#parseInt(String, 16) 将十六进制字符串解析为整数,加一,然后使用 Integer#toHexString 将其转回十六进制。

      String hexString = "A953CF";
      // 16 sepcifies the string to be in base 16, hexadecimal
      int hexAsInt = Integer.parseInt(hexString, 16); 
      hexAsInt += 6; // Add 6
      String newHexString = Integer.toHexString(hexAsInt);
      System.out.println(newHexString);
      
      --> A953D4
      

      【讨论】:

        猜你喜欢
        • 2010-11-27
        • 1970-01-01
        • 2011-07-09
        • 2016-06-15
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        相关资源
        最近更新 更多