String.format() and hex numbers in Java
Solution 1
The width used in format is always a minimum width. In this case, instead of using sub string operations I would suggest:
String.format("%05X", decInt & 0xFFFFF);
Solution 2
Format width only works to create a minimum number of digits, and only has effect on leading zeroes.
Instead of substring, you could use a bit mask:
String.format("%05X", decInt & 0x0FFFFF)
By the way, 11
-> 0000B
, not 0000A
as claimed in your question.
Fitzoh
Updated on October 28, 2020Comments
-
Fitzoh over 3 years
I'm trying to figure out why
String.format()
is behaving the way it does.Context: Systems programming class, writing an assembler.
There is a 5 character hex field in the object file, which I am creating from a value.
Tried using:
String.format("%05X", decInt);
This works as intended for positive numbers (11 ->
0000B
) However it fails for negative numbers (-1 ->FFFFFFFF
instead ofFFFFF
)I suppose I could just take a substring of the last 5 characters, but I would still like to figure out why it behaves this way.