c - 二进制文件有编码吗?使困惑

标签 c encoding binaryfiles

假设我编写以下 C 程序并将其保存在名为 Hello.c 的文本文件中

#include<stdio.h>
int main()
 {
     printf("Hello there");
     return 0;
 }

Hello.c 文件可能会以 UTF8 编码格式保存。

现在,我编译此文件以创建一个名为 Hello 的二进制文件

现在,这个二进制文件应该以某种方式存储文本“Hello there”。问题是使用什么编码来存储此文本?

最佳答案

据我所知,vanilla C 没有任何编码的概念,尽管如果你正确地跟踪多字节字符,你可能可以使用编码。默认情况下,使用 ASCII 将字符映射到单字节字符。

关于字符串“Hello there”存储在可执行文件本身中,您的说法是正确的。字符串文字被放入全局内存中,并在调用 printf 时替换为指针,因此您可以在二进制文件的数据段中看到字符串文字。

如果您有权使用十六进制编辑器,请尝试编译程序并在编辑器中打开二进制文件。 Here是我执行此操作时的屏幕截图。您可以看到字符串文字的每个字符都由一个字节表示,后跟 0 (NULL)。这是 ASCII。

关于c - 二进制文件有编码吗?使困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21485688/

相关文章:

c - 如何使用 timeval 表示 10 毫秒?

c - 定义一个返回结构指针的函数

c++ - 如何在C++中以二进制方式将列表容器写入文件

c - C中的bmp图像数据

encoding - 特殊字符的 CQLSH 问题

linux - ELF中 ".note.ABI-tag"段有什么意义?

c - 在 GCC 进行的每次优化后获取汇编代码?

c - 在文本文件中查找特定组合

ios - 在 iOS 上将 UIImage 编码为 base64 字符串

ios - 如何将sps pps(从mp4文件读取)信息添加到每个IDR帧