9

printf()我记得未签名的情况下......但我在规格中%u找不到这样的%uString.format()

所以如果我有一个大的unsignedint 那么%d它会正常工作吗?

4

1 回答 1

12

如果您想将 int 视为未签名的,您可以

int i = ...
String s = String.format("%d", i & 0xFFFFFFFFL);

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

做相反的事情,你可以做

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

并且s2将与s在范围内的情况相同。

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

于 2013-08-13T08:00:53.270 回答