假设我有一个接收固定长度缓冲区的方法,如下所示:
#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
?最好不要每位设置位。
感谢帮助!