gpt4 book ai didi

c++ - 在 C++ 中操作位数组中的字段

转载 作者:行者123 更新时间:2023-11-30 04:40:55 24 4
gpt4 key购买 nike

所以我想知道设置和操作位字段。

我已经找到了 C/C++ Code to treat a character array as a bitstream我猜这与我的问题类似,但它并没有给我一个我认为必须存在的很好的 STL 方法。

我在想来自 stl 的位集但我的数据集非常复杂,具有 1、2、3、4、7、8、16 位格式的位布局。

假设我想访问我的数据中的一个项目,即第 4 个字段,它是一个跨越字节边界的 8 位代码段,有没有一种简单的方法可以做到这一点?

byte 1   byte 211112344 44444455

我正在寻找一个好的 STL 实现来访问 4 中的数据或设置 4 中的数据,我假设存在一些东西,因为必须将数据转换为单个字节并将其屏蔽似乎很愚蠢。编写它似乎也很困难,并且应该有一种更简单的方法来完成这样的任务。

还有别的办法吗?

编辑 - 我的数据集长度约为 20 个字节,我想将其全部按位顺序保存

最佳答案

您能解释一下为什么常规位域不够用吗?换句话说,为什么不这样做:

    struct ComplexBitLayout {
unsigned field1 :4;
unsigned field2 :1;
unsigned field3 :1;
unsigned field4 :8;
unsigned field5 :2;
} __attribute__((__packed__)); // or your compiler's equivalent

ComplexBitLayout cbl;

cbl.field4 = x;

做你想做的事?

您是希望能够以编程方式即时构建不同的布局还是其他什么?

关于c++ - 在 C++ 中操作位数组中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/655772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com