首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否有可移植的替代C++位字段的方法

是否有可移植的替代C++位字段的方法
EN

Stack Overflow用户
提问于 2015-07-30 22:14:43
回答 5查看 6K关注 0票数 22

在很多情况下(尤其是在低级编程中),数据的二进制布局很重要。例如:硬件/驱动程序操作、网络协议等。

在C++中,我可以使用char*和按位操作(掩码和移位)读/写任意二进制结构,但这样做很繁琐且容易出错。显然,我试图限制这些操作的范围,并将它们封装在更高级别的API中,但这仍然是一件痛苦的事情。

C++ bitfields似乎为这个问题提供了一个开发人员友好的解决方案,但不幸的是,它们的存储是implementation specific

NathanOliver提到了std::bitset,它基本上允许你用一个很好的operator[]访问整数的单个位,但缺少多位字段的访问器。

使用元编程和/或宏,可以抽象库中的逐位操作。因为我不想重复发明轮子,所以我正在寻找一个(最好是STL或boost)库来做这件事。

根据记录,我正在寻找一个解析器,但问题及其解决方案应该是通用的。

编辑:short answer:事实证明,bitfield的存储在实践中是可靠的(即使它不是标准规定的),因为系统/网络库使用它们,并且在使用主流编译器编译时产生性能良好的程序。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31726191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档