python - 如何在 python 中从不同的数据类型创建 "byte stream"

标签 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]

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

欢迎任何帮助。 谢谢。

最佳答案

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/

相关文章:

python - 如何在两个不同实例之间共享变量

python - Python 中的属性引用

python - reverse() 不适用于 Python 文字?

python - 如何覆盖请求中的 .get() 方法?

python - 我可以从另一个字节对象中获取长度为 1 的字节对象,而不进行切片吗?

java - 这段代码中的字节数组大小是多少?我可以让它更通用吗?

python - 列表列表的总和和长度

c - c中的字节操作

java - 将 byte[] 转换为 Java 字符串。添加一个?在每次转换中

python - 从字节中删除 '\x'