Pracując po jakimś kodzie Pythona, zauważam, że istnieje wiele różnych reprezentacji dla wartości szesnastkowych. Na przykład, jeśli wybiorę numer tak:Różnica między różnymi typami/reprezentacjami heksadecymalnymi w Pythonie
xx = '\x03\xff'
wówczas następujące polecenia (w wersji z których używam do konwersji trochę endian do big endian)
yy = hex(struct.unpack('>H', xx)[0])
powróci:
'0x3ff'
jednak to polecenie
zz = xx.encode('hex')
powróci:
'03ff'
Wreszcie, drukowanie tylko wartość powróci z tej
'\x03\xff'
Od spojrzeń tego istnieją trzy różne rodzaje hex wtedy.
'\xFF'
'0xFF'
'FF'
Jaka jest różnica?
punkty bonusowe jeśli ktoś mógłby sugerować lepszy sposób konwertowania mały endian do wielkiej liczby endian. Powyższa metoda dla yy
nie będzie działać dla liczb większych niż dwa bajty uparcie i pracuję z pewnymi ciągami heksadecymalnymi o długości 16 bajtów (włączając wartości, które nie odpowiadają wartości ascii/integer)
Numpy ma rutyny, aby pomóc bajt zamawiania http: // docs.scipy.org/doc/numpy/user/basics.byteswapping.html – tpg2114
Pozdrawiam. Popatrzę na to teraz – stephenfin