Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格式化十六进制_Java_String_Format_Hex - Fatal编程技术网

Java 格式化十六进制

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

我有一个整数,我正试图将其转换为十六进制,然后用前导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) 

有人能解释一下我的错误在哪里吗?

您的错误是
字符串。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);