这是一个小问题:我想从不同的数据类型,可变长度的整数,字符串创建一个字节流(字节整数表)。
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]
我尝试了几种方法,比如使用中间字符串然后将其转换为字节。但是这个解决方案很难看,并且无法正常工作。
欢迎任何帮助。 感谢。
答案 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)
。