C-二进制文件是否编码?使困惑



假设我编写以下C程序,然后将其保存在名为hello.c

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

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

现在,我编译了此文件以创建一个名为Hello

的二进制文件

现在,此二进制文件应在某种程度上存储文本" Hello there"。问题是使用什么编码来存储此文本?

据我所知,

香草C没有任何编码概念,尽管如果您正确跟踪多字节字符,则可以使用编码。默认情况下,ASCII用于将字符映射到单字节字符。

您对存储在可执行文件本身中的字符串" Hello hello"是正确的。字符串文字被放入全局内存中,并替换为呼叫printf中的指针,因此您可以在二进制的数据段中看到字符串文字。

如果您可以访问十六进制编辑器,请尝试编译程序并在编辑器中打开二进制文件。这是我这样做的屏幕截图。您可以看到字符串字面的每个字符由单个字节表示,其次是0(null)。这是ASCII。

最新更新