我有一个二进制数据的vector< bool>,需要一位一位地写入二进制文件(我知道字节必须是8的倍数,假设是这样)。然后,我需要将该数据重新读回vector< bool>。我有巨大的困难让它工作。
数据必须在vector< bool>中开始和结束。如果有人能提供简单的语法来实现这一点,那将是一个巨大的帮助。
发布于 2011-02-02 22:43:32
最简单的方法是使用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
https://stackoverflow.com/questions/4875603
复制相似问题