格式化十六进制

时间:2014-07-21 20:25:28

标签: java string format hex

我有一个整数,我试图将其转换为十六进制,然后使用前导0填充,以便字符串的长度为16个字符以下是我的代码

long longdpid = Long.parseLong(dataPathID);
String stringhexdpid = Long.toHexString(longdpid);
String.format("%016x", stringhexdpid);

我收到以下错误:

Exception in thread "POLLtimer" java.util.IllegalFormatConversionException: x != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045) 

有人可以解释我的错误在哪里吗?

4 个答案:

答案 0 :(得分:1)

%x采用整数而不是字符串

String.format("%016x", longdpid);

应该有效

答案 1 :(得分:0)

您的错误是String.format会为您转换为十六进制。您无需亲自致电Long.toHexString()。您使用的格式代码x需要整数,而不是字符串。 阅读更多http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

答案 2 :(得分:0)

String stringhexdpid = Long.toHexString(longdpid);

执行此操作后,您有String

然而在

String.format("%016x", stringhexdpid);

你告诉它期待很久。你想要的是'%016s',但这不起作用,因为%s不做左边填充。

要解决问题,请执行

String.format("%016x", longdpid);

答案 3 :(得分:0)

在String.format()中,只需尝试使用longdpid而不是stringhexdpid。这应该有用。