2014-12-16 2 views
1

Я должен декодировать необработанное двоичное значение, которое выглядит как b'\xa3\x13\xa4;\xcb\xda\x1b\x1b,Ut\xde\xeb2\xb5\x84\xe5&\x85;', до шестнадцатеричного значения, которое тогда будет выглядеть как 0x90D152B5ED57E00336FD8E106A7BCE28FC3EA588.Как декодировать необработанный двоичный код в шестнадцатеричном формате

Я пытался использовать raw_bin.decode («шестигранной»), но это говорит мне, чтобы использовать codecs.decode(), но я потерял ..

Как я могу расшифровать b'\xa3\x13\xa4;\xcb\xda\x1b\x1b,Ut\xde\xeb2\xb5\x84\xe5&\x85;' к 0x90D152B5ED57E00336FD8E106A7BCE28FC3EA588 в Python?

+3

'импорта binascii; bincii.hexlify (b '\ xa3 \ x13 \ xa4; \ xcb \ xda \ x1b \ x1b, Ut \ xde \ xeb2 \ xb5 \ x84 \ xe5 &\x85;') .decode() 'даст вам' a313a43bcbda1b1b2c5574deeb32b584e526853b'' – falsetru

+0

Спасибо! это уже лучше, но пока не совсем. Я получаю 'b'4e79c534c4fe926f9a0c7c7d3a7112252bfa5b4d'' (это может быть не одно и то же значение), но мне нужно' 0x4e79c534c4fe926f9a0c7c7d3a7112252bfa5b4d' –

ответ

1

Применение binascii.hexlify

>>> x = b'\xa3\x13\xa4;\xcb\xda\x1b\x1b,Ut\xde\xeb2\xb5\x84\xe5&\x85;' 
>>> binascii.hexlify(x).decode() 
'a313a43bcbda1b1b2c5574deeb32b584e526853b' 

Преобразование на номер с помощью intbase с параметром 16:

>>> int(binascii.hexlify(x), 16) 
931003516565576134942949873523045876335469036859 
>>> int(binascii.hexlify(x), 16) == 0xa313a43bcbda1b1b2c5574deeb32b584e526853b 
True 
+0

Большое вам спасибо, это похоже на то, что я ищу .. Но когда я использую ' int (binascii.hexlify (x), 16) 'to' SELECT' он указывает 'значение с плавающей запятой '950e5119' выходит за пределы диапазона представления компьютера (8 байтов)' –

+1

@DaedalusMythos, я думаю, вы пропустили 'base' аргумент 16. – falsetru

+1

@DaedalusMythos, BTW, что вы имеете в виду 'SELECT'? – falsetru