0

我想将此字符串“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)
4

3 回答 3

5

fo 的值x必须是整数。

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

结果:

000000000001e240
于 2018-01-24T13:14:51.233 回答
3

您不能像这样将字符串转换为十六进制,只能将数字格式化为%016x.

您可以通过解析解决此问题"123456"

String.format("%016x", Integer.parseInt("123456"));
于 2018-01-24T13:15:07.167 回答
2

堆栈跟踪说明

x != java.lang.String

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

对于解析,您可以使用

Integer.parseInt(stringVariable);

所以你的代码行会变成:

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

希望我有所帮助。

于 2018-01-24T13:18:21.850 回答