【问题标题】:Java: convert binary string to hex string [duplicate]Java:将二进制字符串转换为十六进制字符串[重复]
【发布时间】: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 也有我的偏好。

标签: java binary hex


【解决方案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");
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-21
        • 2014-10-24
        • 2013-01-16
        • 2019-08-23
        • 1970-01-01
        • 2017-02-23
        • 2014-08-03
        • 2012-03-04
        相关资源
        最近更新 更多