首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从文件中收集位数据

从文件中收集位数据
EN

Stack Overflow用户
提问于 2011-02-02 22:30:15
回答 1查看 447关注 0票数 2

我有一个二进制数据的vector< bool>,需要一位一位地写入二进制文件(我知道字节必须是8的倍数,假设是这样)。然后,我需要将该数据重新读回vector< bool>。我有巨大的困难让它工作。

数据必须在vector< bool>中开始和结束。如果有人能提供简单的语法来实现这一点,那将是一个巨大的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-02-02 22:43:32

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

我今天过得很好,下面是一些“伪”代码:

代码语言:javascript
复制
// 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4875603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档