Java十六进制数增加一

时间:2014-05-13 16:15:30

标签: java arrays hex

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

String keyFrom = "536a11dae4b062cab536549d";

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

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

3 个答案:

答案 0 :(得分:2)

使用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));
        }

答案 1 :(得分:0)

将您的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);
}

答案 2 :(得分:0)

编辑:如果您使用超过~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