Самым простым способом, который я могу придумать, является использование модуля struct
из понимания списка:
import struct
print [hex(ord(b)) for b in struct.pack('>L',777007543)]
# ['0x2e', '0x50', '0x31', '0xb7']
Немного сложнее получить шестнадцатеричные цифры в верхнем регистре, но не так уж и плохо:
import string
import struct
xlate = string.maketrans('abcdef', 'ABCDEF')
print [hex(ord(b)).translate(xlate) for b in struct.pack('>L',777007543)]
# ['0x2E', '0x50', '0x31', '0xB7']
Обновление
Поскольку из ваших комментариев кажется, что вы, возможно, используете Python 3 - даже если ваш вопрос не имеет тега «python-3.x» - и тот факт, что в настоящее время большинство людей используют более позднюю версию, вот код иллюстрирующий, как это сделать, который будет работать в обеих версиях (получая заглавные шестнадцатеричные буквы):
import struct
import sys
if sys.version_info < (3,): # Python 2?
def hexfmt(val):
return '0x{:02X}'.format(ord(val))
else:
def hexfmt(val):
return '0x{:02X}'.format(val)
byte_list = [hexfmt(b) for b in struct.pack('>L', 777007543)]
print(byte_list) # -> ['0x2E', '0x50', '0x31', '0xB7']