假设我编写以下 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/