首页 文章

逐字节读取二进制文件

提问于
浏览
1

我在我的C类中有这个奇怪的赋值,我必须在二进制文件(132.147)中使用float类型编写一个特定的数字,然后使用char类型读取它,这样最终结果将是每个字节的十进制值(-94,37,4和67) .

fstream binFile("blah.bin", ios::binary|ios::in|ios::out);
float a = 132.147;
binFile.write((char*)&a, sizeof(float));
char b[4];
binFile.read((char*)&b, sizeof(b));
cout << (int)b[0] << ' ' << (int)b[1] << ' ' << (int)b[2] << ' ' << (int)b[3] << endl; // -51 -51 -51 -51
cout << b[0] << ' ' << b[1] << ' ' << b[2] << ' ' << b[3]; // = = = =
binFile.close();
return 0;

我知道他们从哪里得到这4个号码 . 如果我编写文件并使用十六进制编辑器读取它,我会得到4个十六进制数字,一旦转换为带符号的二进制数,就可以转换为它们的十进制形式 . 但是,我完全不知道如何在C中以编程方式执行此操作 . 任何线索?

谢谢 !

1 回答

  • 1

    正如亚当所说,你必须重新打开文件 . 您可能已经注意到,如果您已从读取中检查返回值,则它不会读取 . 你只需要读取sizoef一个字节,但要求阅读更多是无害的 . 读完之后......

    cout << (int)b[0] << ' ' << ...
    

相关问题