ycomp
ycomp

Reputation: 8583

does %d in String.format() work for unsigned integers also?

in printf() I remember for unsigned there is %u... but I can find no such %u in specs for String.format()

so if I have a large unsigned int then %d will work correctly on it?

Upvotes: 11

Views: 6687

Answers (1)

Peter Lawrey
Peter Lawrey

Reputation: 533680

If you want to treat an int as if it were unsigned you can to

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

This effectively turns the signed int into a long, but it will be from 0 .. 2^31-1

To do the reverse you can do

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

And s2 will be the same as s provided it is in range.

BTW: The simplest thing to do might be to use a long in the first place. Unless you are creating a lot of these the extra memory is trivial and the code is simpler.

Upvotes: 13

Related Questions