Java 格式化十六进制
我有一个整数,我正试图将其转换为十六进制,然后用前导0填充,这样字符串的长度就是16个字符。下面是我的代码Java 格式化十六进制,java,string,format,hex,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.IllegalFo
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)
有人能解释一下我的错误在哪里吗?您的错误是
字符串。format
将为您转换为十六进制。您不需要自己调用Long.toHexString()
。您使用的格式代码x
需要整数,而不是字符串。
阅读更多
这样做之后,您就有了一个字符串
然而在
String.format("%016x", stringhexdpid);
你在告诉它期待一个漫长的未来。您想要的是'%016s'
,但这不起作用,因为%s
不做左填充
要解决这个问题,只要做
String.format("%016x", longdpid);
%x
接受整数而不是字符串
String.format("%016x", longdpid);
应该在String.format()中工作,只需尝试longdpid而不是stringhexdpid。这应该可以用。只是字符串.格式(“%016X”,longpid)
?
String.format("%016x", longdpid);