import struct
struct.unpack("<H",b"\x00\x01") # unpacks 2 byte little endian unsigned int
struct.unpack(">l",b"\x00\x01\x02\x03") # unpacks 4 byte big endian signed int
注意,您的示例将拆分2个字节的单词,而不是字节。
因为这个问题也出现在关于分割二进制字符串的搜索中:
value = b'\x00\x01\x00\x02\x00\x03'
split = [value[i] for i in range (0, len(value))]
# now you can modify, for example:
split[1] = 5
# put it back together
joined = bytes(split)
您实际上是在询问序列化/反序列化。使用struct.pack和struct.unpack(https://docs.python.org/3/library/struct.html)。这为您提供了很好的原语来进行解包和endian交换。例如:
注意,您的示例将拆分2个字节的单词,而不是字节。
因为这个问题也出现在关于分割二进制字符串的搜索中:
以下是将字节拆分为列表的方法:
给出结果:
可以对
byte
对象使用切片:但是,在处理这些帧时,您可能还想知道^{} objects ;这些可以让您将字节解释为C数据类型,而无需您做任何额外的工作,只需对底层字节强制转换一个“视图”:
mv
对象现在是一个内存视图,它将每2个字节解释为一个无符号短字节;因此它现在具有长度3,并且每个索引都是一个基于基础字节的整数值。相关问题 更多 >
编程相关推荐