我正在使用struct.unpull来解压缩python中的C风格结构。我有一个工作方法,但期望优化并尝试了非工作方法。
C代码:
struct __attribute__((packed))
{
struct
{
uint16_t A : 4;
uint16_t B : 12;
} status;
int16_t C;
int16_t D;
int16_t E;
int16_t F[4];
float32_t G;
} sampleStruct;
Python代码:
工作:
A, B, C, D, E, F0, F1, F2, F3, G = struct.unpack('<BHhhh4hf', bytes(rx_packet[1:]))
不工作:
A, B, C, D, E, F, G = struct.unpack('<BHhhh4hf', bytes(rx_packet[1:]))
如何纠正不工作的方法?
只要只有一个数组,就使用扩展的拆包赋值:
# v pack into F
A, B, C, D, E, *F, G = struct.unpack('<BHhhh4hf', bytes(rx_packet[1:]))
*F
目标将创建一个列表,其中包含无法与任何以前或以后的目标匹配的其余项目。