我有一个二进制字符串:
1010010111100101100010101010011011010001111100000010101000000000010000000111110111100"
如何将其转换为十六进制字符串?
我尝试使用包装类Long
和Integer
,但它对我不起作用,抛出NumberFormatException
.
我有一个二进制字符串:
1010010111100101100010101010011011010001111100000010101000000000010000000111110111100"
如何将其转换为十六进制字符串?
我尝试使用包装类Long
和Integer
,但它对我不起作用,抛出NumberFormatException
.
您需要为此使用BigInteger
- 该数字太大而无法容纳原始值。可以存储在 a 中的最大数字long
是 9223372036854775807,而这个二进制字符串的十进制等效值要大得多,即 25069592479040759763832764。这就是为什么你得到NumberFormatException
.
所以用BigInteger
:
String s = "1010010111100101100010101010011011010001111100000010101000000000010000000111110111100";
BigInteger b = new BigInteger(s, 2);
System.out.println(b.toString(16));
...这使:
14bcb154da3e0540080fbc
由于二进制 String 的长度可能超过 Integer 或 Long 的容量,因此最好使用 BigInteger。请记住,在 Java 中,int 始终为 32 位,而 long 为 64 位。
String binaryString = "1010010111100101100010101010011011010001111100000010101000000000010000000111110111100";
String hexString = new BigInteger(binaryString, 2).toString(16);
public static String convertBinaryToHex(String binInPut) {
int chunkLength = binInPut.length() / 4, startIndex = 0, endIndex = 4;
String chunkVal = null;
for (int i = 0; i < chunkLength; i++) {
chunkVal = binInPut.substring(startIndex, endIndex);
System.out.println(Integer.toHexString(Integer.parseInt(chunkVal, 2)));
startIndex = endIndex;
endIndex = endIndex + 4;
}
return binInPut;
}
如果您使用大数字:
String hexString = new BigInteger(binaryString, 2).toString(16);