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

时间:2014-01-31 16:57:13

标签: c encoding binaryfiles

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

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

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

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

的二进制文件

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

1 个答案:

答案 0 :(得分:1)

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

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

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