如何在python中创建不同数据类型的“字节流”

时间:2011-08-30 15:50:23

标签: python byte

这是一个小问题:我想从不同的数据类型,可变长度的整数,字符串创建一个字节流(字节整数表)。

val1 = 0x2
val2 = 0x0001020304050607
val3 = "blablabla"

我想获得像:

这样的流
byteStream = val1 + val2 + val3
byteStream = [0x02, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x62, 0x6c, 0x61, 0x62, 0x6c, 0x61, 0x62, 0x6c, 0x61]

我尝试了几种方法,比如使用中间字符串然后将其转换为字节。但是这个解决方案很难看,并且无法正常工作。

欢迎任何帮助。 感谢。

1 个答案:

答案 0 :(得分:3)

import struct

val1 = 0x2
val2 = 0x0001020304050607
val3 = "blablabla"

data=struct.pack('>BQ9s',val1,val2,val3)
print repr(data)

产量

'\x02\x00\x01\x02\x03\x04\x05\x06\x07blablabla'

BQ9s告诉struct.pack打包一个unsigned int(1个字节),然后是一个无符号长long(8个字节),后跟9个字符(每个1个字节)。可以找到可能的格式字符列表here

data是一个字符串(即一个字节序列)。如果您希望最终有一个列表,可以使用list(data)