あなたが投稿したリンクはc++フォーラムにつながるので、c++でコーディングしていると思いますか?
各ブール値がバイトの特定のビットにあるビットマスクとビット操作を使用できます。したがって、1 バイト (uint8) を使用して 8 つのブール値を格納できます。これは非常に低レベルであり、C でコーディングし、ストレージが大きな問題である場合にこれを行っていました。
本当にその道を進みたい場合は、以下の操作をいくつかの高レベルの読み取り/書き込みおよび設定/リセット機能に隠すのが最善です。ブール値をバイトに変換した後 (これでバイトの配列ができました!)、ここで説明されているようにバイナリ ファイルに単純に書き込むことができます。
ブール値をバイトに変換する方法に関するいくつかのヒントを次に示します。関心のある各ブール値のマスクを作成して、バイト内のどの位置で書き込み/読み取りを行うかを指定します。
読みやすくするために、16 進数を使用しています。
例えば:
uint8 bitFlags = 0x00; // empty mask 0000 0000
uint8 maskA = 0x01; // first bit: 0000 0001
uint8 maskB = 0x02; // second bit: 0000 0010
変数を設定するには、ビットごとの OR を使用します (他のすべてのビットを保持しますが、関心のあるビットを設定します。
bitFlags = bitFlags | maskA;
変数を読み取ります。
bool isTrueA = ( bitFlags & maskA ) > 0 ; // bitwise AND, result is 1 if bit is set,
// 0 otherwise
変数をリセットします。
bitFlags = bitFlags & (!maskA); // bitwise AND with inverse mask: 1111 1110
// forces position of A to be zero
ビットマスクの使用に関する詳細については、こちらを参照してください。