我有一个整数,我试图将其转换为十六进制,然后使用前导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)
有人可以解释我的错误在哪里吗?
答案 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。这应该有用。