无法将大型无符号整数正确写入二进制文件 - C++
can't write correctly large unsigned ints to binary file - c++
在我的项目中,我需要向二进制文件中写入连续的无符号整数,每个数字精确地占用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();
}
相关文章:
- 正在读取二进制文件(is_open)
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- Android 在编译二进制文件时重建静态库
- 在 C++ 中将双精度变量写入二进制文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- C++:实际上不是从二进制文件中读取
- 如何从二进制文件中的给定符号中获取调用程序图
- 将内部带有矢量的结构保存/读取到二进制文件中
- 编译多个C++文件.调用二进制文件以运行代码
- 如何使用位字段将数据从二进制文件复制到结构中?
- uint8_t同一二进制文件的不同十进制值
- C++单个生成文件多个二进制文件
- 尝试将数字写入二进制文件时引发异常
- C++中读/写二进制文件
- 如何忽略某些二进制文件的执行?
- 对在不同二进制文件中创建的对象文件的依赖关系
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作