2016-01-17 2 views
0

У меня есть строка типа «Некоторые символы \ x00 \ x80 \ x34, а затем некоторые другие символы». Как преобразовать обычные символы в их шестнадцатеричный эквивалент, при преобразовании \ x00 в фактическое значение 00 hex? binascii.hexlify() рассматривает '\', 'x', '0', '0' как фактические символы.python string to hex с экранированными шестнадцатеричными значениями

Позже редактирование: Сама строка создается другой функцией. Когда я печатаю его, он на самом деле печатает «\ x00».

+0

Я нашел решение здесь: http://stackoverflow.com/questions/3519125/converting-a-hex-string-representation-to-actual-bytes-in -python –

ответ

0

Неясно, что вы просите, так как binascii.hexlify должно работать:

>>> import binascii 
>>> s = "\x00\x80\x34" 
>>> binascii.hexlify(s) 
'008034' 
>>> s = "foobar \x00\x80\x34 foobar" 
>>> binascii.hexlify(s) 
'666f6f6261722000803420666f6f626172' 

foorbar = 666f6f6261722, пространство = 20

https://docs.python.org/3/library/binascii.html

1

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

Также вы можете преобразовать в шестнадцатеричные значения, используя только встроенный метод кодирования и декодирования. Это должно заботиться о том, что вы пытаетесь сделать. Следующие три строки - это то, что я запускал в терминале моей машины, и дал результат, который вы ожидаете. Я также добавил изображение, чтобы показать вам. Надеюсь, что это помогает:

aStr = "Some characters \x00\x80\x34 and then some other characters" 
aStr.encode("hex") 
aStr.encode("hex").decode("hex") 

Here is the code I ran in my terminal.

Смежные вопросы