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)) ;
}