2014-09-30 69 views
0

我使用std::bitset給了我一個數字的二進制表示。我現在想要使用這個和輸出到std::cout只使用二進制表示 - 我不要想要std::bitset的ASCII表示 - 我只想輸出我的位集,因爲它是在內存中。使用std :: bitset生成二進制文件

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

您預期的輸出是什麼? – 2014-09-30 01:49:35

+0

當我們看看它的ascii表示時,我的預期輸出是垃圾,但是如果你想看看它的二進制表示,那麼它就像10101011101010111010101110101011 – Zambezi 2014-09-30 01:51:33

+0

,所以你想從中獲取原始數據?唯一的方法是'to_ulong'和'to_ullong',這對大的位集不起作用。 – 2014-09-30 01:54:20

回答

0

如果您的bitset是功能to_ulongto_ullong的範圍內,就可以直接使用這些功能和輸出那些二進制文件。

如果您的位數超過了unsigned longunsigned long long可存儲的數量,該函數將引發溢出異常。這意味着您需要提取位集的子集,併爲每個子集存儲unsigned longunsigned long long以存檔。

不幸的是std::bitset沒有提供直接的子集功能,所以你必須自己寫。

相關問題