将字符串转换为十六进制

Convert String to Hexadecimal

我想将这个字符串“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 的值必须是整数。

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

结果:

000000000001e240

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

您可以通过解析 "123456":

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

堆栈跟踪表明

x != java.lang.String

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

要进行解析,您可以使用

Integer.parseInt(stringVariable);

因此您的代码行将变为:

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

希望我有所帮助。