【发布时间】:2009-07-14 21:36:34
【问题描述】:
我有一个 8 字节的消息,其中消息的不同块映射到不同类型的数据(int、bool 等),并且它们的位大小不同(消息中的 int 值是 12 位等) .)。我只想传递与数据相关的位,但我不确定是否有更好的方法。我目前的想法是创建一个带有向量后端的位数组类型,并有一个模板化的访问器来获取包含在指定类型中的值。虽然在我输入这个的时候,我开始认为所有可能类型的一个很大的联合可以传递给每个数据。
编辑:
消息包含不同类型的数据。例如,一条消息包含一个 8 位整数和 5 个 1 位布尔值,而另一条消息包含一个 16 位时间戳(我自己的类)和一个 8 位整数。
【问题讨论】:
-
没有看到代码很难说,但这听起来像是位域和联合可能是最佳解决方案的罕见情况之一。
-
实际上,不,因为众所周知,位域在不同的编译器上具有不同的布局。在结构 {int a:1;诠释 b:1};对于 a 和 b 的 2 的幂完全没有共识。
标签: c++ bit-manipulation dbus