Преобразование списка кодов ASCII в строку (массив байтов) в Python

У меня есть список целочисленных значений ASCII, которые мне нужно преобразовать в строку (двоичную), чтобы использовать ее в качестве ключа для криптографической операции . (Я повторно реализую криптографический код java в python)

Это работает (при условии 8-байтового ключа):

key = struct.pack('BBBBBBBB', 17, 24, 121, 1, 12, 222, 34, 76)

Однако я бы предпочел, чтобы длина ключа и список параметров unpack () не были жестко закодированы.

Как я могу правильно реализовать это, учитывая начальный список целых чисел?

Спасибо!

39
задан cubuspl42 19 November 2019 в 11:20
поделиться

3 ответа

Я предпочитаю модуль array модулю struct для такого рода задач (те, которые включают последовательности однородных значений ):

>>> import array
>>> array.array('B', [17, 24, 121, 1, 12, 222, 34, 76]).tostring()
'\x11\x18y\x01\x0c\xde"L'

нет вызова len , никаких манипуляций со строками и т. Д. - быстро, просто, прямо, зачем предпочесть какой-либо другой подход ?!

46
ответ дан 27 November 2019 в 02:01
поделиться
key = "".join( chr( val ) for val in myList )
7
ответ дан 27 November 2019 в 02:01
поделиться
struct.pack('B' * len(integers), *integers)

* последовательность означает «последовательность распаковки» - или, скорее, «при вызове f (..., * args, ... ) , пусть args = sequence ".

11
ответ дан 27 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: