How to get hex string from signed integer

后端 未结 3 596
-上瘾入骨i
-上瘾入骨i 2021-01-04 01:39

Say I have the classic 4-byte signed integer, and I want something like

print hex(-1)

to give me something like

0xfffffff

3条回答
  •  被撕碎了的回忆
    2021-01-04 01:58

    This will do the trick:

    >>> print hex (-1 & 0xffffffff)
    0xffffffffL
    

    or, in function form (and stripping off the trailing "L"):

    >>> def hex2(n):
    ...     return hex (n & 0xffffffff)[:-1]
    ...
    >>> print hex2(-1)
    0xffffffff
    >>> print hex2(17)
    0x11
    

    or, a variant that always returns fixed size (there may well be a better way to do this):

    >>> def hex3(n):
    ...     return "0x%s"%("00000000%s"%(hex(n&0xffffffff)[2:-1]))[-8:]
    ...
    >>> print hex3(-1)
    0xffffffff
    >>> print hex3(17)
    0x00000011
    

    Or, avoiding the hex() altogether, thanks to Ignacio and bobince:

    def hex2(n):
        return "0x%x"%(n&0xffffffff)
    
    def hex3(n):
        return "0x%s"%("00000000%x"%(n&0xffffffff))[-8:]
    

提交回复
热议问题