Java:将二进制字符串转换为十六进制字符串[重复]
Posted
技术标签:
【中文标题】Java:将二进制字符串转换为十六进制字符串[重复]【英文标题】:Java: convert binary string to hex string [duplicate] 【发布时间】:2013-10-29 21:46:00 【问题描述】:我需要将二进制字符串转换为十六进制字符串,但我遇到了问题。 我通过这种方法将二进制字符串转换为十六进制字符串:
public static String binaryToHex(String bin)
return Long.toHexString(Long.parseLong(bin,2));
没关系!但我丢失了字符串左侧的零。 例如:
方法返回:123456789ABCDEF, 但我想退回这个:
00000123456789ABCDEF
【问题讨论】:
你不能手动添加缺失的 0 吗? 使用String.format
方法将String
附加到0's
你松开它们的原因是因为 Long 中的前导零没有价值。您要么必须更改处理转换的方式,要么必须自己重新添加它们。 @RohitJain 建议的 String.format 也有我的偏好。
【参考方案1】:
我将使用Long.parseLong
来解析值,而不是Long.toHexString
,然后使用String.format
输出具有所需宽度的值(在您的示例中为21):
public static String binaryToHex(String bin)
return String.format("%21X", Long.parseLong(bin,2)) ;
【讨论】:
【参考方案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() 将其替换为零。
【讨论】:
【参考方案3】:只需手动添加零。这是一种方法:
public static String binaryToHex(String bin)
return ("0000000000000000" + Long.toHexString(Long.parseLong(bin, 2)).replaceAll(".*.16", "$1");
【讨论】:
以上是关于Java:将二进制字符串转换为十六进制字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章