c - 在 C 中另存为二进制文件,但不显示零和一

标签 c file struct binary fopen

据我所知,通过使用 wb 模式在 C 中保存文件,我不应该在保存的文件中看到二进制数字(零和一)。

当我以 wb 模式保存时,文件中的输出是:

Feras Wilson — n FFFF îè` c P xHF F û¥2012

但这不是二进制零和一。我如何保存文件以包含零和一,然后能够在 C 中读取它?

最佳答案

它保存为 0 和 1,但您的文本编辑器将它们读取为字节(将它们分组为 8 位)并使用 ASCII 显示它们。 [1]

当您写入文本文件时,需要做很多工作来解释您希望写入的二进制数据,以便将其置于人类可读的格式中。

例如,如果您编写数字 255,它必须将其转换为 '2''5' 的形式, '5'(这是字符!)然后写下这些每个字符。

如果它写入二进制文件,它只会将实际的二进制数据放入文件中。这取决于它是什么类型的变量(它代表它的八位字节数)以及字节顺序和其他因素。如果它是一个无符号字符,它将放入二进制文件 0b11111111(这是实际的原始数字,而不是字符!)。

[1] http://www.asciitable.com/

关于c - 在 C 中另存为二进制文件,但不显示零和一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12473272/

相关文章:

java - 使用调用 API 的 JNI 内存管理

scala - 使用 future 时程序不会终止

file - go) 我如何提供下载服务?

c - 应为 const char * 但参数是 char 类型

c - * 在 linux 命令行上

c - 如何去掉 C 代码中的最后一个逗号?

c++ - 记忆一下从 C++ 到 C 的结构

使用 SIMD 将 AoS 转换为 C 中的 SoA

c - 为什么使用 32 位整数存储 fread() 中的数据时会得到垃圾值?

c++ - 无法打开相对路径