Как получить шестнадцатеричную строку из целого числа со знаком - PullRequest
14 голосов
/ 23 октября 2008

Скажем, у меня есть классическое 4-байтовое целое число со знаком и я хочу что-то вроде

печать гекс (-1)

чтобы дать мне что-то вроде

>> 0xffffffff

На самом деле, приведенное выше дает мне -0x1. Я зацикливаюсь на каком-то языке более низкого уровня, а командная строка на python быстрая и простая.

Итак ... есть ли способ сделать это?

Ответы [ 3 ]

27 голосов
/ 23 октября 2008

Это поможет:

>>> 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 (), благодаря Игнасио и Бобинсу:

def hex2(n):
    return "0x%x"%(n&0xffffffff)

def hex3(n):
    return "0x%s"%("00000000%x"%(n&0xffffffff))[-8:]
4 голосов
/ 23 октября 2008

Попробуйте эту функцию:

'%#4x' % (-1 & 0xffffffff)
1 голос
/ 14 сентября 2016

"0x {: 04x}". Формат ((int (my_num) & 0xFFFF), '04x'), где my_num - требуемое число

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...