This is what I see in java, and it puzzles me.
Long.toHexString(0xFFFFFFFF)
returns ffffffffffffffff
Similarly, 0xFFFFFFFF
and Long.parseLong("FFFFFFFF", 16)
are unequal.
This:
Long.toHexString(0xFFFFFFFF)
is equivalent to:
Long.toHexString(-1)
which is equivalent to:
Long.toHexString(0xFFFFFFFFFFFFFFFFL)
Basically, the problem is that you're specifying a negative int
value, which is then being converted to the equivalent negative long value, which consists of "all Fs". If you really want 8 Fs, you should use:
Long.toHexString(0xFFFFFFFFL)
As others have said, 0xFFFFFFFF
evaluates to the int value -1
, which is promoted to a long
.
To get the result you were expecting, qualify the constant with the L
suffix to indicate it should be treated as a long
, i.e. Long.toHexString(0xFFFFFFFFL)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With