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;

}