Ellery Newcomer Ellery Newcomer - 5 months ago 33
Python Question

How to get hex string from signed integer

Say I have the classic 4-byte signed integer, and I want something like
print hex(-1)
to give me something like
>> 0xffffffff
In reality, the above gives me -0x1. I'm dawdling about in some lower level language, and python commandline is quick n easy.
So.. is there a way to do it?


This will do the trick:

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

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

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

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)
>>> print hex3(17)

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:]