3

我需要将二进制字符串转换为十六进制字符串,但我遇到了问题。我通过这种方法将二进制字符串转换为十六进制字符串:

public static String binaryToHex(String bin){
   return Long.toHexString(Long.parseLong(bin,2));
}

没关系!但我丢失了字符串左侧的零。前任:

该方法返回这个:123456789ABCDEF,但我想返回这个:

00000123456789ABCDEF

4

3 回答 3

8

而不是Long.toHexString我会Long.parseLong用来解析值,然后String.format输出具有所需宽度的值(在您的示例中为 21):


public static String binaryToHex(String bin) {
   return String.format("%21X", Long.parseLong(bin,2)) ;
}
于 2013-10-21T12:25:38.210 回答
1

不是很优雅,但很有效

public static String binaryToHex(String bin) {
    String hex = Long.toHexString(Long.parseLong(bin, 2));
    return String.format("%" + (int)(Math.ceil(bin.length() / 4.0)) + "s", hex).replace(' ', '0');
}

我使用 String.format() 将填充字符串与空格分开,然后调用 replace() 将其替换为零。

于 2013-10-21T12:15:29.907 回答
0

只需手动添加零。这是一种方法:

public static String binaryToHex(String bin){
    return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.{16}", "$1");
}
于 2013-10-21T12:24:33.153 回答