我想你是用 c++ 编码的,因为你发布的链接指向一个 c++ 论坛?
您可以使用位掩码和位操作,其中每个布尔值都位于字节的某个位。因此,您可以使用一个字节 (uint8) 来存储 8 个布尔值。这是相当低级的,我曾经在用 C 编码并且存储是一个大问题时这样做。
如果你真的想走这条路,你最好将下面的操作隐藏在一些更高级别的读/写和设置/重置函数中。将布尔值转换为字节后(您现在有一个字节数组!),您可以简单地将它们写入二进制文件,如此处所述。
以下是有关如何将布尔值转换为字节的一些提示:您为每个感兴趣的布尔值创建掩码,以指定它们将在字节中的哪个位置被写入/读取。
我使用十六进制数字以获得更好的可读性。
例如:
uint8 bitFlags = 0x00; // empty mask 0000 0000
uint8 maskA = 0x01; // first bit: 0000 0001
uint8 maskB = 0x02; // second bit: 0000 0010
要设置变量,请使用按位或(保留所有其他位,但设置您感兴趣的位:
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
有关位掩码使用的更多信息,请参见此处。