在很多情况下(尤其是在低级编程中),数据的二进制布局很重要。例如:硬件/驱动程序操作、网络协议等。
在C++中,我可以使用char*
和按位操作(掩码和移位)读/写任意二进制结构,但这样做很繁琐且容易出错。显然,我试图限制这些操作的范围,并将它们封装在更高级别的API中,但这仍然是一件痛苦的事情。
C++ bitfields似乎为这个问题提供了一个开发人员友好的解决方案,但不幸的是,它们的存储是implementation specific。
NathanOliver提到了std::bitset
,它基本上允许你用一个很好的operator[]
访问整数的单个位,但缺少多位字段的访问器。
使用元编程和/或宏,可以抽象库中的逐位操作。因为我不想重复发明轮子,所以我正在寻找一个(最好是STL或boost)库来做这件事。
根据记录,我正在寻找一个解析器,但问题及其解决方案应该是通用的。
编辑:short answer:事实证明,bitfield的存储在实践中是可靠的(即使它不是标准规定的),因为系统/网络库使用它们,并且在使用主流编译器编译时产生性能良好的程序。
https://stackoverflow.com/questions/31726191
复制相似问题