簡體   English   中英

我可以在C ++中輸入/輸出位嗎

[英]Can I input/output bits in C++

我在想如何壓縮文件,我想知道是否可以對輸出文件進行位操作。

當前,我有一個可變大小n的字符串,僅包含0和1。 例如:010111001010110

我想輸出一個僅包含n位而不是n個字符的文件。

另外,如果可能的話,我該如何讀回這些位並將其轉換回字符串?

謝謝。

更新:如果我無法直接寫出位並將其打包為字節,這是否意味着我可以將8位轉換為char並僅輸出char列表? 如果是這樣,如果我嘗試存儲“ 00000000”(意味着為空)會怎樣?

您不能直接寫出位,必須至少將它們打包成八位。 是的,這意味着要寫出字節。 請注意,輸出實際上將被填充為字節,您必須對此做一些事情。

要將包含0和1的字符串轉換為原始數據,最簡單的方法是使用std::bitset (如果您知道長度),或者編寫一個前進八分的循環,例如

for (auto i = 0; i < str.size(); i += 8)

如果您在網上尋找arb255.zip,您會發現我的雙射算術編碼器。 用於程序的io是BIT I / O,當然文件的確以字節為單位。 但是字符串對字節文件是雙射的。 它的所有內容都包含在其中,但就主例程而言,其真正的雙射位IO。

實際上,DJPP GNU C的舊代碼是在bijective.dogma.net上,需要一些更改才能在當前C中工作,但I / O仍然可以工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM