【发布时间】:2011-09-16 19:59:58
【问题描述】:
我看到'\0' 被用作混合二进制文件(UTF8 字符串 + 二进制数据)中的分隔符。谁能解释一下'\0' 的含义或指出一个学习的好地方吗?
【问题讨论】:
标签: binary binaryfiles delimiter
我看到'\0' 被用作混合二进制文件(UTF8 字符串 + 二进制数据)中的分隔符。谁能解释一下'\0' 的含义或指出一个学习的好地方吗?
【问题讨论】:
标签: binary binaryfiles delimiter
它是空字符;更多信息在这个维基百科article。
【讨论】:
\0 是 \000 的简写,它是八进制字符转义。通常,您可以缩短任何不跟八进制数字的八进制转义。这源于原始的 C 转义序列(\n \r \t \f \v \b \000,其中后者是八进制表示法的字符值;ANSI 添加了一些,\v 现在有点少见,许多现代语言都没有实现它)。
【讨论】:
两个字符的\0 表示在C 源代码中用于表示NUL character,这是ASCII 值为0 的(单个)字符。
NUL 字符在 C 风格的字符串中用于指示字符串的结尾在哪里。例如,字符串"Hello" 被编码为十六进制字节:
48 65 6c 6c 6f 00
在这种情况下,C 编译器会自动在任何双引号字符串的末尾添加 00 字节。如果你把常量写成"Hello\0",那么C编译器会生成:
48 65 6c 6c 6f 00 00
【讨论】: