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

时间:2013-08-13 07:56:14

标签: java

printf()我记得因为未签名而有%u ...但我在%u

的规范中找不到这样的String.format()

所以如果我有一个很大的unsigned int,那么%d会正常运行吗?

1 个答案:

答案 0 :(得分:10)

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

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

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

要做反向,你可以做

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

如果s2在范围内,s将与long相同。

BTW:最简单的方法可能是首先使用{{1}}。除非你正在创建很多,否则额外的内存是微不足道的,而且代码更简单。