たくさんの情報をビット単位でブロックして保存し、ファイルに保存したいと思います。
ファイルをそれほど大きくしないために、intの代わりに少数のビットを使用して指定された情報を保存したいと思います。
たとえば、Day、Hour、Minuteをファイルに保存したいとします。
データストレージ用に5ビット(日)+ 5ビット(時間)+ 6ビット(分)=16ビットのメモリのみが必要です。
それをブロックに保存してファイルに入れる効率的な方法が見つかりません。
私の懸念にはいくつかの大きな問題があります:
毎回保存したいデータ長は一定ではありません。それは入ってくる情報に依存します。そのため、構造を使用して格納することはできません。
ブロックに未使用のビットがあってはなりません。int(4バイト変数)に30ビットを格納すると、保存した次の3ビットが自動的に次のintに入るというトピックを検索しました。でもそんなことはしたくない!!
右シフト、左シフトを使用して文字に数値を入れ、文字をブロックに入れることができることは知っていますが、非効率的です。
指定されたビットを引き続き入れ、writeを使用してファイルに入れることができるchar配列が必要です。