Лучший способ разделить шестнадцатеричный в python?

Я довольно новичок в шестнадцатеричном в общем, и у меня есть приложение, в котором мне нужно разделить шестнадцатеричное число. Например, учитывая число 0x607F, мне нужно будет вернуть высокий (0x60) или низкий (0x7F) байт.

Это может быть реализовано, но он чувствует себя немного cloogy. Есть ли более стандартный способ сделать это в python?

def byte(integer,highlow): assert highlow=='high' or highlow=='low' if highlow=='high': return hex(int(bin(integer)[:-8],2)) if highlow=='low': return hex(int(bin(integer)[-8:],2)) 

3 Solutions collect form web for “Лучший способ разделить шестнадцатеричный в python?”

Это возвращает старший байт и младший байт как кортеж:

 def bytes(integer): return divmod(integer, 0x100) 

Например:

 >>> high, low = bytes(0x607F) >>> hex(high) '0x60' >>> hex(low) '0x7f' 

Кстати, в зависимости от того, для чего вам нужны байты, и откуда взялось целое число, могут быть гораздо лучшие способы сделать то, что вам нужно.

 def bytes(num): return hex(num >> 8), hex(num & 0xFF) bytes(0x607F) 

доходность

 ('0x60', '0x7f') 

Чтобы добавить к Ned ответ, который является вполне правильным, struct является мощным инструментом для извлечения байтов.

 >>> import struct >>> print("0x%2x 0x%2x\n" % tuple(struct.pack('<H',0x4355))) 0x55 0x43 

В этом примере «<» сообщает пакету интерпретации ввода как малознакомого , и «H» говорит, что ожидает 2-байтовое число. Struct создает объект байтов (на Python 3), который затем может быть преобразован в кортеж, чтобы удовлетворить параметры форматирования строки для% x, чтобы распечатать шестнадцатеричный.

Python 2.7 немного более громоздкий, только потому, что struct.pack помещает информацию в строку, которая должна быть разделена на ее символы :

 >>> print("0x%2x 0x%2x\n" % tuple([ ord(x) for x in struct.pack('<H',0x4355)])) 0x55 0x43 

Если вы действительно делаете что-то столь же простое, как этот пример, это, вероятно, слишком велико. Если вы используете больше значений или разных длин чисел, например, регистры, наблюдаемые с помощью микроконтроллера, или обмен данными с C или C ++, рассмотрите возможность использования struct, чтобы упростить споры с байтами.

Python - лучший язык программирования в мире.