这里有一个小问题:我想从不同的数据类型、可变长度的整数、字符串创建一个字节流(一个字节整数表)。
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]
我尝试了几种方法,比如使用中间字符串,然后将其转换为字节。但是这个解决方案很丑陋,而且不能正常工作。
欢迎任何帮助。 谢谢。
最佳答案
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 个字节),然后是一个 unsigned long long(8 个字节),然后是 9 个字符(每个 1 个字节) ).可以找到可能的格式字符列表 here .
data
是一个字符串(即字节序列)。如果您希望最终得到一个列表,您可以使用 list(data)
。
关于python - 如何在 python 中从不同的数据类型创建 "byte stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7246001/