【问题标题】:Convert String to Hexadecimal [duplicate]将字符串转换为十六进制 [重复]
【发布时间】:2018-07-03 13:10:27
【问题描述】:

我想将此字符串“123456”转换为十六进制String.format("%016x", "123456")

但我遇到了错误

Exception in thread "main" java.util.IllegalFormatConversionException: x != java.lang.String
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
    at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
    at java.util.Formatter.format(Formatter.java:2520)
    at java.util.Formatter.format(Formatter.java:2455)
    at java.lang.String.format(String.java:2940)
    at Asdfsaf.main(Asdfsaf.java:22)

【问题讨论】:

  • 阅读格式模式(尤其是关于“x”的转换参数类别)。此外,您期望得到什么结果:使用特定编码从字符串创建的字节数组的十六进制表示或解析(提示提示)数字的十六进制表示?

标签: java numbers hex number-formatting numberformatter


【解决方案1】:

堆栈跟踪说明

x != java.lang.String

明确说明 String 不能转换为十六进制。 您应该先将其解析为整数,然后再将其转换为十六进制。

解析可以使用

Integer.parseInt(stringVariable);

所以你的代码行会变成:

String.format("%016x", Integer.parseInt("123456"))

希望我能帮上忙。

【讨论】:

    【解决方案2】:

    你不能像这样将字符串转换为十六进制,只有数字可以用%016x格式化。

    你可以通过解析"123456"来解决这个问题:

    String.format("%016x", Integer.parseInt("123456"));
    

    【讨论】:

      【解决方案3】:

      x 的值必须是整数。

      String.format("%016x", Integer.valueOf("123456"));
      

      结果:

      000000000001e240
      

      【讨论】:

        猜你喜欢
        • 2011-05-15
        • 2019-01-17
        • 2023-03-08
        • 2012-07-21
        • 2017-05-29
        • 2013-01-16
        • 1970-01-01
        • 2018-01-31
        • 1970-01-01
        相关资源
        最近更新 更多