2016-05-17 33 views
-1

我確信我可以從0-7中獲得數字,並且我有興趣使代碼儘可能高效。 我想只輸入三個最低有效位到二進制文件,而不是整個字節。 有沒有反正我只能寫3位?我得到了大量的數字... 我發現的另一種方法是嘗試混合數字(00000001 shl 3 &下一個數字) 雖然總是有一個奇怪的。C中有效的文件保存,將某些位寫入二進制文件

回答

3

文件在字節級別工作,沒有辦法輸出單個位。您必須讀取包含您感興趣的位的原始字節,使用必須修改的位(使用按位操作)修復它們,並將它們寫回原位。


1.,它不會是有效的所以無論如何做。硬盤最適合大塊寫入;閃存磁盤實際上需要以處理大塊(=>單個位變化需要全塊擦除和重寫);它們是操作系統和磁盤控制器執行大量寫入緩存的原因。

+0

我不是想要在第3位準確,但例如一個3位數組,總數爲24位可能只寫入16位(3x3 +填充)的想法是保存內存 –

+2

@ Dreggman45 :你可以在一個32位int中填充10個3位組 - 節省空間,但是現在對數據的所有訪問(讀寫)都需要移位和掩碼。確保你真的需要這麼多的空間節省,並且相關的成本都可以。 (同樣使用4位組會讓你的代碼更簡單一些。) – Mat