我需要将二进制字符串转换为十六进制字符串,但我遇到了问题。我通过这种方法将二进制字符串转换为十六进制字符串:
public static String binaryToHex(String bin){
return Long.toHexString(Long.parseLong(bin,2));
}
没关系!但我丢失了字符串左侧的零。前任:
该方法返回这个:123456789ABCDEF,但我想返回这个:
00000123456789ABCDEF
而不是Long.toHexString
我会Long.parseLong
用来解析值,然后String.format
输出具有所需宽度的值(在您的示例中为 21):
public static String binaryToHex(String bin) {
return String.format("%21X", Long.parseLong(bin,2)) ;
}
不是很优雅,但很有效
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");
}