Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将二进制字符串转换为十六进制字符串_Java_Binary_Hex - Fatal编程技术网

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

Java:将二进制字符串转换为十六进制字符串,java,binary,hex,Java,Binary,Hex,我需要将二进制字符串转换为十六进制字符串,但我有一个问题。 我通过以下方法将二进制字符串转换为十六进制字符串: public static String binaryToHex(String bin){ return Long.toHexString(Long.parseLong(bin,2)); } 没关系!但是我丢失了字符串左边的零。 例: 该方法返回:123456789ABCDEF, 但我想说: 00000123456789ABCDEF不是很优雅,但很管用 public stati

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

public static String binaryToHex(String bin){
   return Long.toHexString(Long.parseLong(bin,2));
}
没关系!但是我丢失了字符串左边的零。 例:

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


00000123456789ABCDEF

不是很优雅,但很管用

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

只需手动添加零即可。这里有一个方法:

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

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


您不能手动附加缺少的0吗?请使用
String.format
方法将
字符串
附加为
0
松开它们的原因是因为长时间内前导的零没有值。您必须改变处理转换的方式,或者您必须自己重新添加它们。@RohitJain建议的String.format也有我的偏好。

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