我想将此字符串“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)
答案 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"))
希望我帮助过。