我正在使用python3 struct模块解压缩从串行com提取的字节数据。 (在帮助下)我已经弄清楚了如何将大多数数据打包成易于阅读的形式。我在组头结构struct group_hdr上遇到格式字符串时遇到困难(请参阅随附的屏幕快照文档)。我有一个字节数据(b)。我知道“单词”的字符串是“ H”,但是从文档中我不清楚phd_status是什么。尚未在数据结构文档中的其他任何地方定义它。有任何想法吗?。预先谢谢你。
struct group_hdr
{
union phdb_status status
word label
}
subrecord = struct.unpack_from('<??H', b)
答案 0 :(得分:1)
如状态中所述,它是一个宽度为32位的简单位域。联合可能用C(或类似语言)的其他地方定义为
union phdb_status {
unsigned int bit_0:1;
unsigned int bit_1:1;
};
以下Python代码将存储您的值:
status, label = struct.unpack_from('<IH', b)
,您可以使用status
和status & 1
测试status & 2
的各个位。