将字符串转换为十六进制

时间:2018-01-24 13:10:57

标签: java numbers hex number-formatting numberformatter

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

3 个答案:

答案 0 :(得分:4)

x必须是整数。

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

结果:

000000000001e240

答案 1 :(得分:3)

您无法将字符串转换为十六进制,只能使用%016x格式化数字。

您可以通过解析"123456"

来解决此问题
String.format("%016x", Integer.parseInt("123456"));

答案 2 :(得分:1)

堆栈跟踪说明

x != java.lang.String

明确指出String不能转换为十六进制。 在将其转换为十六进制之前,应先将其解析为整数。

对于解析,您可以使用

Integer.parseInt(stringVariable);

所以你的代码行将成为:

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

希望我帮助过。