Java:将二进制字符串转换为十六进制字符

时间:2013-10-21 11:57:05

标签: java binary hex

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

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

没关系!但我丢失了字符串左边的零。 例如:

方法返回:123456789ABCDEF, 但我想要归还这个:

00000123456789ABCDEF

3 个答案:

答案 0 :(得分:8)

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


public static String binaryToHex(String bin) {
   return String.format("%21X", Long.parseLong(bin,2)) ;
}

答案 1 :(得分:0)

不是很优雅,但有效

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()将其替换为零。

答案 2 :(得分:0)

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

public static String binaryToHex(String bin){
    return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.{16}", "$1");
}