c ++ - 任意void * chunk到bitset

时间:2015-06-21 04:17:00

标签: c++ stl bitset

假设我有一个接收固定长度缓冲区的方法,如下所示:

#define SIGN_SIZE 64

bitset<SIGN_SIZE> chunkToBitset(void * chunk);

现在,我想要的是从该数据块的位数(块的大小总是128位[16字节])创建一个bitset限制为 SIGN_SIZE,其中SIGN_SIZE可以是(32,64,96或128)中的任何值。

我试图将块转换为unsigned long,但它似乎没有返回正确的值。 例如:

unsigned long ulon = (unsigned long)* chunk;
bitset<SIGN_SIZE> bs(ulon);

这种方法只有在SIGN_SIZE为64时才有效,如果为96则不起作用。

如何使用chunk中的所有位构建位集,但是尊重限制SIGN_SIZE?最好不要每位设置位。

感谢帮助!

0 个答案:

没有答案