【发布时间】:2013-03-19 14:28:54
【问题描述】:
我整晚都在尝试获取一个简单的程序来读取文本文件,然后将其复制/写回二进制格式。
我的代码循环遍历文本文档,获取数据,将其放入缓冲区并将其写回。哎呀,我什至硬编码了我想用二进制写出的数据。
我用的是fstream,ofstream,例子:fp1.open("student.dat",ios::binary);
并且正在几个不同的网站上阅读,例如: http://www.functionx.com/cpp/articles/serialization.htm
http://www.cppforschool.com/tutorial/files2.html
我有工作代码,但是当我在 Notepad++ 中打开 .bin 文件时,我看到我的文本数据仍然看起来像文本,并没有真正“转换”为任何十六进制格式或任何其他格式。数字是,我仔细检查了它们是否准确,你知道,一个小网站,你可以在其中输入数字并吐出十六进制。
我厌倦了为什么我的文本没有转换,所以我销毁了所有代码并试图重新开始。 *因此缺乏例子”
所以,最后我的问题是,为什么文本没有以任何方式改变,这对于二进制文件和使用这种方法是否正常?我什至使用了预制的编码示例,结果都是一样的。我只是希望它看起来像 1 和 0,而实际上并非如此,而且一切都在正常工作吗?
我的主要项目是将 .OBJ 文件转换为二进制数据,但我真的应该如何看待这个?这个二进制文件应该是什么样子?
任何建议将不胜感激!!! 谢谢!
【问题讨论】:
-
如果你想在文件中看到 1 和 0,那么你必须在文件中写入 1 和 0。
-
文本字符只是二进制字符的一个子集——你期望什么“转换”?
-
您需要一个包含 0 和 1 作为其唯一字符的文本文件。那不是二进制文件。二进制文件只是一个在读取时不被视为文本的文件 - 它被视为字节序列。文本编辑器专门用于阅读和编辑文本文件。
-
“我的主要项目是将 .OBJ 文件转换为二进制数据” - 嗯...
.objfiles 是二进制 -
我想我期待一切都是十六进制的。我现在正在阅读 ::binary 不会更改 ASCII,它只是将其写入。所以我的问题将变为:“如何将文本文件转换/序列化为不可读的二进制文件格式?”