Why Long.toHexString(0xFFFFFFFF) returns ffffffffffffffff

前端 未结 4 674
無奈伤痛
無奈伤痛 2021-01-14 00:30

This is what I see in java, and it puzzles me.

Long.toHexString(0xFFFFFFFF) returns ffffffffffffffff

Similarly, 0xFFFFFFFF

4条回答
  •  花落未央
    2021-01-14 00:48

    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)
    

提交回复
热议问题