c++ - 是否可以使用 C++ 从二进制文件中逐位读取?

标签 c++ file bit

我是新来的,所以我会尽量清楚地说明我的问题。我试图得到一个直接的答案,但当我检查其他问题时,它们非常特殊,我感到困惑。

我有一个二进制文件,我需要为我的项目读取它。我还有一张规范表,我正在根据这些规范阅读文件。所以我创建了一个 cpp 文件,并编写了一个简单的程序来读取每个元素。我使用 ifstream 和 read() 函数从文件中读取。

问题是在规范表上,我知道我需要读取大小为 12 的位串。从细节来看,很明显我应该只为每个元素读取 12 位。但是我不确定是否可以一点一点地阅读。其余元素以字节为单位读取。而且,如果我每次读取 2 个字节并使用位“掩码”仅获取 12 位,则此后读取的其余元素将无法正确匹配。所以我的猜测是我真的只需要读取 12 位。

所以我的问题。是否可以从二进制文件中读取 12 位?或阅读点点滴滴? .我的意思是只有 12 个,没有读取字节然后屏蔽它们。

非常感谢。

最佳答案

不,这是不可能的。

您应该做的是读取 2 个字节,屏蔽 12 位以获得您想要的结果,同时将其他 4 位存储在某处。现在,当您再次需要 12 位时,只读取 1 个字节并将其与 4 个存储位组合。

关于c++ - 是否可以使用 C++ 从二进制文件中逐位读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31919011/

相关文章:

java - 将位修改代码从 C 移植到 Java

php - MySQL select bit(1) 显示为 string(3)

c++ - 如何在 Linux 平台的 Visual Studio c++ 中编写 GTK 应用程序?

file - 如何将计时器添加到批处理文件中?

c++ - 如何在数的质因数分解中找到质因数的重数?

ios - bundle 内容和文件内容之间的访问速度差异

file - 如何在matlab中读取文件?

java - 位数组 Java 的高效连接

c++ - 频率和振幅

c++ - 调用 Gtkmm textBuffer->insert 时出现段错误