Ответ 1
Это сделает трюк:
>>> print hex (-1 & 0xffffffff)
0xffffffffL
или, в форме функции (и снятия конечного "L" ):
>>> def hex2(n):
... return hex (n & 0xffffffff)[:-1]
...
>>> print hex2(-1)
0xffffffff
>>> print hex2(17)
0x11
или, вариант, который всегда возвращает фиксированный размер (может быть, лучший способ сделать это):
>>> def hex3(n):
... return "0x%s"%("00000000%s"%(hex(n&0xffffffff)[2:-1]))[-8:]
...
>>> print hex3(-1)
0xffffffff
>>> print hex3(17)
0x00000011
Или, избегая hex() вообще, благодаря Ignacio и bobince:
def hex2(n):
return "0x%x"%(n&0xffffffff)
def hex3(n):
return "0x%s"%("00000000%x"%(n&0xffffffff))[-8:]