不能正确地将大的无符号整数写入二进制文件-C ++

SH

在我的项目中,我需要按顺序将无符号int写入二进制文件,并且每个数字必须精确地占4个字节,这一点很重要。但是,当我使用十六进制编辑器打开二进制文件时,我看到了这种奇怪的情况:数字被正确地写入,直到9号。在编号10之前,他将添加另一个额外的字节并写入“ 13”(并且已经弄乱了我的文件)。而且奇怪的事情继续发生-从数字30开始,每个字符都会被写成不同的字符。这是为什么?如何解决,至少是尺寸问题?这是我的简单示例代码:

int main()
{
    string filename;
    cin >> filename;
    fstream mystream;
    mystream.open(filename, ios::out);
    if (mystream)
        for (unsigned int i = 0; i < 3200; i++)
            mystream.write((char*)&i, sizeof(unsigned int));
    mystream.close();

    return 0;
}

并附有我在文件中看到的图像:十六进制编辑器中的文件捕获

谢谢

迈克猫

该数字10是换行符LF,由于在文本模式下打开了文件,因此将其转换为CRLF。

以二进制模式打开文件以处理二进制文件。

#include <iostream>
#include <fstream>
#include <string>

using std::string;
using std::cin;
using std::fstream;
using std::ios;

int main()
{
    string filename;
    cin >> filename;
    fstream mystream;
    mystream.open(filename, ios::out | ios::binary); // add OR with ios::binary
    if (mystream)
        for (unsigned int i = 0; i < 3200; i++)
            mystream.write((char*)&i, sizeof(unsigned int));
    mystream.close();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用ifstream从C ++文件中读取二进制无符号短整数

C ++将二进制文件写入文件

使用 C++ 将整数向量写入二进制文件的更快方法?

使用 C 将整数值写入二进制文件

如何在C ++中使用文件流将正确无符号的__int8数组读取和写入二进制文件

字符串,以无符号长形式将ascii值附加到二进制文件中。C ++

在C ++中向文件流写入/读取二进制字节/整数/长

C++ 二进制文件 - 写入整数 - 奇怪的行为

C:将字符数组(包含'1'和'0')写入文件中的二进制文件

写入二进制文件时数据丢失-C ++

在C ++中将二进制搜索树写入文件

用C写入二进制文件,解释输出

对于C中的无符号整数,确定X是否最多为Y的一半(二进制)

用C ++将二进制数据写入fstream

无法将1和0的字符串写入二进制文件,C ++

用C将2D数组写入二进制文件(得到奇怪的结果)

如何将二进制字符串写入文件C#

将 N 个原始二进制字节精确写入 C 中的文件

将二进制数写入文件[C ++]时出现意外结果

如何有效地将二进制文件读入向量C ++

将二进制文件复制到c缓冲区的正确方法

为什么C ++标准在混合符号的二进制运算中指定带符号的整数强制转换为无符号?

写入整数并从C ++中的二进制文件中读取它们:字节数错误

将二进制文件读入int数组C ++

编写一个C程序,该程序对无符号整数值(4个字节)的二进制表示形式中的1进行计数

搜索二进制文件C ++

C二进制读写文件

C中的二进制文件

C ++二进制读写文件