Как сделать строку Python из не-ascii "байтов" - PullRequest
5 голосов
/ 04 октября 2010

Мне нужно создать строку Python, состоящую из байтов, отличных от ascii, для использования в качестве буфера команд в модуле C.Я могу сделать это, если я напишу строку вручную:

mybuffer = "\x00\x00\x10"

Но я не могу понять, как создать строку на лету, если у меня есть набор целых чисел, которые станут байтами в строке.Объединение целого числа со строкой является ошибкой TypeError.

Итак, если у меня есть список целых чисел, скажем:

myintegers = [1, 2, 3, 10]

Как я могу преобразовать это в строку "\x01\x02\x03\x0A"

Я использую Python 2.6.

Ответы [ 3 ]

4 голосов
/ 04 октября 2010

u''.join(map(unichr, myintegers)) будет делать то, что вы хотите красиво.

3 голосов
/ 04 октября 2010

Python 2.X

''.join(chr(i) for i in myintegers)

Python 3.X

bytes(myintegers)
0 голосов
/ 04 октября 2010
In [28]: import struct

In [29]: struct.pack('{0}B'.format(len(myintegers)),*myintegers)
Out[29]: '\x01\x02\x03\n'

Обратите внимание, что

In [47]: '\x01\x02\x03\n'=="\x01\x02\x03\x0A"
Out[47]: True
...