Преобразовать список байтовых строк в байтовый массив (поток байтов) - PullRequest
2 голосов
/ 05 декабря 2011

У меня есть список шестнадцатеричных строк, представляющих байты, в форме "FF". Я хочу преобразовать весь список в поток байтов, чтобы я мог отправить его через сокет (Python 3). Похоже, что тип bytearray будет работать, но я не могу найти способ напрямую преобразовать список в bytearray.

Я могу сделать это вручную в цикле, но, думаю, должен быть лучший способ сделать это на Python.

Ответы [ 3 ]

3 голосов
/ 05 декабря 2011
hexstrings = ["DE", "AD", "BE", "EF"]   # big-endian 0xDEADBEEF

bytes = bytearray(int(x, 16) for x in hexstrings)
bytes = bytearray.fromhex("".join(hexstrings))     # Python 2.6 may need u""

Если у вас их много, возможно, стоит посмотреть, какой из них самый быстрый.

0 голосов
/ 05 декабря 2011
hexlist = ["a9", "00", "85", "c6"]
ba = bytearray(h.decode("hex") for h in hexlist)

См. Также bytearray.fromhex:

bytearray.fromhex(string) -> bytearray

Создать объект bytearray из строки шестнадцатеричных чисел. Пробелы между двумя числами принимаются. Пример: bytearray.fromhex ('B9 01EF') -> bytearray (b '\ xb9 \ x01 \ xef').

0 голосов
/ 05 декабря 2011

См .:

char * PyByteArray_AsString (PyObject * bytearray) Возврат содержимого bytearray в виде массива char после проверки на нулевой указатель

из справочника python doc

...