String.format()中的%d是否也适用于无符号整数?

yco*_*omp 7 java

printf()我记得未签名的有%u...但我可以找到没有这样%u的规格为String.format()

所以,如果我有一个大的unsignedint然后%d将正常工作吗?

Pet*_*rey 10

如果你想把int视为无符号你可以

int i = ...
String s = String.format("%d", i & 0xFFFFFFFFL);
Run Code Online (Sandbox Code Playgroud)

这有效地将signed int转换为long,但它将从0 ... 2 ^ 31-1

要做到相反,你可以这样做

int i = (int) Long.parseLong(s);
String s2 = String.format("%d", i & 0xFFFFFFFFL);
Run Code Online (Sandbox Code Playgroud)

而且s2会是一样的s,只要它是在范围内.

顺便说一句:最简单的事情可能是首先使用a long.除非你创建了很多这些额外的内存是微不足道的,代码更简单.