Работая над некоторым кодом Python, я замечаю, что для шестнадцатеричных значений существует несколько разных представлений. Например, если я выберу такое число:
xx = '\x03\xff'
Затем следующая команда (версия которой я использую для преобразования little endian в big endian)
yy = hex(struct.unpack('>H', xx)[0])
вернется:
'0x3ff'
Однако эта команда
zz = xx.encode('hex')
вернется:
'03ff'
Наконец, печать только значения вне этого возвращает
'\x03\xff'
По внешнему виду есть три разных типа гекса.
-
'\xFF'
-
'0xFF'
-
'FF'
Какая разница?
Бонусные очки, если кто-то может предложить лучший способ преобразования маленького числа endian в большое число endian. Вышеуказанный метод для yy
не будет работать для чисел, превышающих два байта, упрямо, и я работаю с шестнадцатеричными строками длиной 16 байт (включая значения, которые не соответствуют значению ascii/integer)