How to get hex string from signed integer

后端 未结 3 597
-上瘾入骨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:]
    
    0 讨论(0)
  • 2021-01-04 02:04

    Try this function:

    '%#4x' % (-1 & 0xffffffff)
    
    0 讨论(0)
  • 2021-01-04 02:06

    "0x{:04x}".format((int(my_num) & 0xFFFF), '04x') , where my_num is the required number

    0 讨论(0)
提交回复
热议问题