C++ 使用std::bitset生成二进制文件

C++ 使用std::bitset生成二进制文件,c++,cout,bitset,C++,Cout,Bitset,我使用std::bitset给我一个数字的二进制表示。我现在想使用它,只使用二进制表示法输出到std::cout——我不想要std::bitset的ASCII表示法——我只想输出内存中的位集 bitset<32> bits = a; cout << bits; //produces the ASCII characters for '1' and '0' depending on a 位集位=a; cout如果您的位集在函数到_ulong或到_ullong的限制范围内,

我使用
std::bitset
给我一个数字的二进制表示。我现在想使用它,只使用二进制表示法输出到
std::cout
——我不想要
std::bitset
的ASCII表示法——我只想输出内存中的位集

bitset<32> bits = a;
cout << bits; //produces the ASCII characters for '1' and '0' depending on a
位集位=a;

cout如果您的位集在函数
到_ulong
到_ullong
的限制范围内,您可以使用这些函数并直接将其输出到二进制文件

如果您的位集超过
无符号长
无符号长
可以存储的量,则函数将引发溢出异常。这意味着您需要提取位集的子集,并为每个子集将
无符号长
无符号长
存储到文件中


不幸的是,
std::bitset
不提供直接子集函数,因此您必须自己编写该函数。

您期望的输出是什么?当您查看它的ascii表示形式时,我期望的输出将是垃圾—但如果您查看它的二进制表示形式,可能是10101011101010111010110101110101110101101101,你想从中获取原始数据吗?唯一的方法是
到_ulong
到_ullong
,这对大比特不起作用。它返回的是数字0,1,我尝试了并测试了这个。这个打印-48,-47,如果它是ascii 0和1,我会得到0,1(int i=0;i位集
有点垃圾。找到另一个解决方案。