我有一个包含8个字符长的字符串
十六进制转储是8个字节@H_301_3@
是801000000000000@H_301_3@
这意味着第1位和第12位打开.@H_301_3@
如何在c中使用bitset功能,让我的生活更轻松.@H_301_3@
谢谢@H_301_3@
解决方法
做什么?问题出在哪里?我无法给出一个很好的例子,说明“如何让你的生活更轻松”,而无需解决问题.我所能做的就是向您展示该类如何在应用程序中工作的基础知识.
这是interface的链接.如果你想处理一个简单的,恒定大小的位组,那么你可以轻松制作一个.如果你想要一个可以增长或缩小的产品,请看Boost.这是一个标准bitset的简单示例:@H_301_3@
std::bitset<40> imFiveBytesLong; imFiveBytesLong.set(0,true);
现在看起来像@H_301_3@
0000000000000000000000000000000000000001
设置第0位.你可以通过询问来测试是否设置了该位:@H_301_3@
bool isItSet = imFiveBytesLong.test(0);
或者您可以通过询问来计算设置位数:@H_301_3@
std::size_t numSet = imFiveBytesLong.count();
编辑:@H_301_3@
要回答下面的评论,请查看bitset的to_ulong方法和bitset的constructors之一.把它放在一起:@H_301_3@
int main () { std::bitset<10> mySet(120ul); // initialize from unsigned long std::cout << mySet.to_uLong(); // print as an unsigned long return 0; }