解包字节编码消息的推荐 "pythonic way" 是多少?

What's the recommended "pythonic way" for unpacking a byte encoded message?

假设我有一个具有以下架构的字节打包消息:

Message Name: Ball
    Field #1: 
        Name: Color
        Type: unsigned int
        Start Bit: 0
        Bit Length: 4
    Field #2: 
        Name: Radius
        Type: single
        Start Bit: 4
        Bit Length: 32
    Field #3: 
        Name: New
        Type: bool
        Start Bit: 36
        Bit Length: 1

将字节序列转换为 python 变量的推荐 pythonic 方法是什么? "struct" 模块能否很好地解包具有任意位长度字段的字节数组?

What is the recommended pythonic way to convert the byte sequence into a python variables?

这个问题很快就会结束。你想要的是阅读 this python doc page about struct and bytearrays.

它将向您展示如何使用格式 packunpack 数据。

Would the "struct" module work well for unpacking byte arrays that have arbitrary bit length fields?

它将向您展示如何使用格式 packunpack 数据。

对,如下:

import struct
color, radius, new = struct.unpack("If?", incoming_bytes)

检查 format characters 定义格式字符串,您就完成了。

您可以使用更多臃肿的库,例如 construct,但是说实话,这种格式非常简单,如果您早 unpackpack,您可以自由组织您的代码中的数据。

例如:

class Ball:
    def __init__(self, color, radius, new):
        self.color = color
        self.radius = radius
        self.new = new

Ball(*unpack("If?", incoming_bytes))