c++ - 如何在 C++ 中准确读取二进制文件中的一个字节

标签 c++ file binary byte

我正在尝试从二进制文件中读取单个字节,但得到的结果不准确。

这是二进制文件的内容:

00000000 00 04 0A 07 00 00 00 00 00 00 74 00 00 00 00 61 69 6E 62 6F 77 00 .........t ....彩虹。

关键是我可以读取一个以上的字节,但我就是不能准确地读取一个字节。如果尝试读取等于 10 的第三个字节 0A,它会给我一个值 32522 或十六进制 7F0A 。我在这里缺少什么?

#include <iostream>
#include <fstream>
#include <cstring>
#include <fstream>

using namespace std;

int main()
{
    fstream file("foo.daf", ios::in | ios::out | ios::binary);

    file.seekg(2);

    int x;

    file.read(reinterpret_cast<char *>(&x), 1);

    cout<<x<<endl;

    return 0;
}

最佳答案

x 没有初始化,你只修改了它的一个字节,所以其他字节都是垃圾。

直接使用正确的类型应该可以解决您的问题(并避免转换)。

char x;

关于c++ - 如何在 C++ 中准确读取二进制文件中的一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27698267/

相关文章:

c++ - linux c++串口回显输出

C语言从文件读取到char数组

java - 如何创建具有最左边位数集的 x 位二进制数

C: 二进制左旋转

c++ - 在 C++ 中重命名名称中带有破折号的文件

c++ - SDL 2.0 中的 SDL_ACTIVEEVENT 等效项?

python - IF 语句不比较从文件接收的值

c - fgetc() 在函数中无法正常工作

linux - 如何在目录中查找二进制文件?

c++ - 如何在 C++ 中将多个参数传递给 BackgroundWorker