反斜杠零分隔符 '\0'

31

我曾看到'\0'被用作混合二进制文件(UTF8字符串+二进制数据)的分隔符。能否有人解释一下'\0'的含义或指向一个好的学习资源?

3个回答

31

20

在C源代码中,使用两个字符的\0表示法来表示NUL字符,它是ASCII值为0的(单个)字符。

NUL字符用于C样式的字符字符串中,以指示字符串的结尾。例如,字符串"Hello"被编码为十六进制字节:

48 65 6c 6c 6f 00

在这种情况下,C编译器会自动在任何双引号字符串的末尾添加00字节。如果您将常量写成"Hello\0",那么C编译器将生成:
48 65 6c 6c 6f 00 00

10

\0\000的缩写,它是一个八进制字符转义。通常情况下,你可以缩短任何不后跟八进制数字的八进制转义。这源于原始的C转义序列(\n \r \t \f \v \b \000,其中后者是八进制表示法中的字符值;ANSI添加了一些内容,而\v在今天已经很少见了,许多更现代的语言也没有实现它)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接