I need to create a Python string consisting of non-ascii bytes to be used as a command buffer in a C module. I can do that if I write the string by hand:
mybuffer = "\x00\x00\x10"
But I cannot figure out how to create the string on the fly if I have a set of integers which will become the bytes in the string. Concatenating an integer with a string is a TypeError.
So if I have a list of integers lets say:
myintegers = [1, 2,开发者_如何学Python 3, 10]
How can I convert that into a string "\x01\x02\x03\x0A"
I am using Python 2.6.
u''.join(map(unichr, myintegers))
will do what you want nicely.
Python 2.X
''.join(chr(i) for i in myintegers)
Python 3.X
bytes(myintegers)
In [28]: import struct
In [29]: struct.pack('{0}B'.format(len(myintegers)),*myintegers)
Out[29]: '\x01\x02\x03\n'
Note that
In [47]: '\x01\x02\x03\n'=="\x01\x02\x03\x0A"
Out[47]: True
精彩评论