Java 将大型二进制字符串转换为十六进制
我有一个二进制字符串:Java 将大型二进制字符串转换为十六进制,java,Java,我有一个二进制字符串: 1010010111100101100010101010011011010001111100000010101000000000010000000111110111100" 如何将其转换为十六进制字符串 我尝试使用包装类Long和Integer,但对我来说不起作用,抛出了NumberFormatException你需要使用biginger来实现这一点-这个数字太大,无法容纳原始值。long中可以存储的最大数字是9223372036854775807,而这个二进制字符串的
1010010111100101100010101010011011010001111100000010101000000000010000000111110111100"
如何将其转换为十六进制字符串
我尝试使用包装类
Long
和Integer
,但对我来说不起作用,抛出了NumberFormatException
你需要使用biginger
来实现这一点-这个数字太大,无法容纳原始值。long
中可以存储的最大数字是9223372036854775807,而这个二进制字符串的十进制等效值要大得多,2506959247904075963832764。这就是为什么会出现NumberFormatException
因此,对于biginger
:
String s = "1010010111100101100010101010011011010001111100000010101000000000010000000111110111100";
BigInteger b = new BigInteger(s, 2);
System.out.println(b.toString(16));
…它给出:
14bcb154da3e0540080fbc
由于二进制字符串的长度可能超过整数或Long的容量,因此最好使用biginger。请记住,在Java中,int始终是32位,长的是64位
String binaryString = "1010010111100101100010101010011011010001111100000010101000000000010000000111110111100";
String hexString = new BigInteger(binaryString, 2).toString(16);
如果您使用的是大数字:
String hexString = new BigInteger(binaryString, 2).toString(16);
公共静态字符串转换器BinaryToHex(字符串binInPut){
int chunkLength=binInPut.length()/4,startIndex=0,endIndex=4;
字符串chunkVal=null;
for(int i=0;i
计算十进制值,然后使用Integer.toHexString(值);可能重复-这是第一个使用java将二进制字符串转换为十六进制字符串的Google结果。
@JohnB这里的答案是使用int/long,在这个例子中,int/long太小了。@berry120感谢您的澄清。干杯
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;
}