0-7の数値が得られることが保証されているので、コードをできるだけ効率的にすることに興味があります。 バイト全体ではなく、3つの最下位ビットだけをバイナリファイルに入力したいとします。 3ビットしか書き込めませんか?私は数字の膨大な数を取得します... 私が見つけた他の方法は、数字をマッシュアップしようとすることです(00000001 shl 3 &次の番号) いつも奇妙なものがあります。効率的なファイル保存Cでバイナリファイルに特定のビットを書き込む
-1
A
答えて
3
ファイルはバイト単位で動作しますが、単一ビットを出力する方法はありません。関心のあるビットが入っている元のバイトを読み取って、ビット単位の操作を使って修正しなければならないビットで修正し、元のバイト位置に書き戻す必要があります。
1.そしてとにかくそうすることが効率的ではないでしょう。ハードディスクは大きなチャンクで書き込みが最適です。フラッシュディスクは実際にはで、大きなブロックで作業するにはが必要です(=> 1つのビットを変更するには完全なブロック消去と書き換えが必要です)。オペレーティングシステムとディスクコントローラが多くの書き込みキャッシュを行う理由はいくつかあります。
関連する問題
- 1. ファイルに書き込む効率的な方法
- 2. 大きなファイルから特定の行を効率的に読み込むR
- 3. オブジェクトをC++でバイナリファイルに書き込む
- 4. objective-cでは、uint8_t配列をバイナリファイルに書き込む効率的な方法はありますか?
- 5. Cで効率的にファイルを書き込む大ファイルリストを作成する
- 6. C++マトリックス内の特定のビットに書き込む
- 7. 特定のエンコーディングでバイナリファイルにchar配列を書き込む
- 8. バイナリファイルに整数を書き込む(C++)
- 9. 大きなNumPy配列をファイルに書き込む効率的な方法
- 10. 条件付きでファイルに書き込む最も効率的な方法は?
- 11. バイナリファイルの特定の位置にバイトを書き込む
- 12. Juliaでcsvファイルにデータを書き込む最も効率的な方法
- 13. ファイルからLocalDateTimeを最も効率的に書き込んで読み込む
- 14. 既存のバイナリファイルの中央に書き込むC++
- 15. Python - バイナリファイル内に長いビット列を書き込む
- 16. バイナリファイルに書き込むpython
- 17. 特定のビット数のJavaでintを書き込む方法
- 18. 混合ラベルと画像データを含むバイナリファイルを効率的に書き込む方法
- 19. ビットをファイルに書き込む
- 20. 符号なしのcharのベクトルをバイナリファイルに書き込むC++
- 21. 効率的にベクトルをハンドルに変換して書き込む
- 22. 多くの行を効率よくファイルに書き込む
- 23. Python - ファイルの特定の静的列に書き込む
- 24. Linuxビデオレコーダーで最も効率的なファイル書き込み方法
- 25. ファイルに8ビットのビットセットを書き込む(C++)
- 26. C#より効率的に2次元配列に文字を書き込む
- 27. 複数の単語にいくつかのビットを書き込むための効率的なアルゴリズム
- 28. バイナリファイルを書き込んでベクトルを埋め込む - C++
- 29. 特定のbinファイルでC++でバイナリファイルを開いて読み込む方法は?
- 30. Inno Setupでバイナリファイルを書き込む
私は3ビット目で正確にしようとしているわけではありませんが、たとえば、合計24ビットの16ビット(3x3 +パディング)に書き込むことができる3 intの配列は、メモリを節約するというアイデアです。 –
@ Dreggman45 :あなたは1つの32ビットintに10の3ビットグループを詰め込むことができます - スペースを節約しますが、データへのすべてのアクセス(読み書き)は現在、シフトとマスクが必要です。あなたが実際にスペース節約の量を必要としていることを確認し、関連する費用はOKです。 (また、4ビットグループを使用するとコードがかなり単純になります)。 – Mat