Python - разбирает строку в форме "0xDE 0xAD 0xBE 0xEF" в байтовый массив - PullRequest
0 голосов
/ 05 марта 2012

Существует множество примеров кода, чтобы выполнить это в нескольких строках кода.Есть ли библиотека в Python 3.2, которая может сделать это за один вызов?Если нет, каков минимальный код для этого?

Я был бы рад получить результаты в любом похожем на список (индексируемом и итерируемом) результате ...

Редактировать: Вы, ребятабыстро!Мне нравится этот:

byte_collection = bytes(int(x, 16) for x in some_string.split())

Ответы [ 3 ]

3 голосов
/ 05 марта 2012
3>> bytes(int(x, 16) for x in '0xDE 0xAD 0xBE 0xEF'.split())
b'\xde\xad\xbe\xef'
3 голосов
/ 05 марта 2012

Список целых чисел:

list_of_ints = [int(x, 16) for x in inputstr.split()]

Строка байтов (символы ASCII):

string_of_bytes = ''.join(chr(int(x, 16)) for x in inputstr.split())

В Python 3:

string_of_bytes = bytes(int(x, 16) for x in inputstr.split())
2 голосов
/ 05 марта 2012

Если вы хотите, чтобы это был список целых чисел, это должно работать, при условии, что s содержит вашу строку:

[int(piece, 16) for piece in s.split()]

Если вы хотите, чтобы она была в виде строки, вы можете использовать это:

''.join(chr(int(piece, 16)) for piece in s.split())
...