如何用非ascii“字节”创建Python字符串

时间:2010-10-04 12:13:44

标签: python string byte

我需要创建一个由非ascii字节组成的Python字符串,用作C模块中的命令缓冲区。 如果我手工编写字符串,我可以这样做:

mybuffer = "\x00\x00\x10"

但如果我有一组整数将成为字符串中的字节,我无法弄清楚如何动态创建字符串。将整数与字符串连接是TypeError。

因此,如果我有一个整数列表,请说:

myintegers = [1, 2, 3, 10]

如何将其转换为字符串"\x01\x02\x03\x0A"

我正在使用Python 2.6。

3 个答案:

答案 0 :(得分:4)

u''.join(map(unichr, myintegers))会做你想做的事。

答案 1 :(得分:3)

Python 2.X

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

Python 3.X

bytes(myintegers)

答案 2 :(得分:0)

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