2

我有一个二进制数据的向量< bool>,我需要将其逐位写入二进制文件(我知道字节必须是 8 的倍数,假设是这样)。然后我需要将该数据重新读回向量<bool>。我很难让它发挥作用。

数据必须在向量<bool> 中开始和结束。请如果有人可以建议简单的语法来实现这一点,那将是一个巨大的帮助。

4

1 回答 1

1

最简单的方法是使用std::bitset。它有一个构造函数和一个 to_ulong 成员,可用于进行转换。然后你只需要将大小为 8 的向量转换为位集,反之亦然。请注意位存储在向量中的顺序以及字节顺序(如果它适用于您的文件)...

我今天过得很好,这里有一些“伪”代码:

// you will guess declarations
// you might have to reverse bit order dependaing of how you store bits

for(int i = 0; i < 8; ++i)
{
    if(myvector[i]) mybistset.set(i);
}

char toWriteInFile = bitset.to_ulong();

// write in file

[...]

char readFromFile;

// read from file

std::bitset mybitset(readFromFile);

// same remarks

for(int i = 0; i < 8; ++i)
{
    myvector[i] = mybistset[i];
}

当然,您必须管理大于 8 部分的矢量大小;)

my2c

于 2011-02-02T14:43:32.367 回答