【发布时间】:2011-07-12 04:56:03
【问题描述】:
std::bitset 有一个to_string() 方法,用于序列化为基于char 的1s 和0s 字符串。显然,这对 bitset 中的 每个 位使用单个 8 位 char,使序列化表示比必要的长 8 倍。
我想以二进制表示形式存储位集以节省空间。 to_ulong() 方法仅在我的位集中少于 32 位时才相关。我有数百个。
我不确定是否要在对象(地址)本身上使用memcpy()/std::copy(),因为它假定对象是 POD。
API 似乎没有为我可以从中获取地址的内部数组表示提供句柄。
我还想要从二进制表示中反序列化位集的选项。
我该怎么做?
【问题讨论】:
-
大端还是小端?有很大的不同(又名位排序)?
-
并非如此。如果将 bitset 保存为字符数组,则对 Endianess 没有直接影响。