x00 在二进制文件中是啥意思?
Posted
技术标签:
【中文标题】\x00 在二进制文件中是啥意思?【英文标题】:What does \x00 mean in binary file?\x00 在二进制文件中是什么意思? 【发布时间】:2011-08-22 17:02:32 【问题描述】:有一次我问一个人“ASCII 和二进制文件有什么区别?”
他说“二进制文件总是有 \x00”
我一直在搜索这个,发现What is the meaning of \x00 , \x04 in php
所以结论是,ASCII 文件没有 NULL 字符?
【问题讨论】:
那个人要么不知道他在说什么,要么你误解了他(顺便说一句,这不是 XOR)。 【参考方案1】:一个 ASCII 文件可能被读取或解释为具有以 NULL 结尾的字符串、回车符和换行符或其他控制字符,这些字符旨在被读取和执行。例如,文本阅读器可能会查找一行文本,其中一行是“在到达换行符之前看到多少个字符”
二进制文件被认为只是一个字节序列 - 它们都没有任何特殊含义,因为文本阅读器会解释它们。
\x00 是特定字节值 (HEX 0) 的示例,文本阅读器可能会以特殊方式对其进行解释。
【讨论】:
【参考方案2】:错了。 ASCII 文件有 NULL 字符。事实上,ASCII 中的每个字符串都以 NULL 结尾。
ASCII 文件是只包含 ASCII 字符 x0 - x127 的文件。
二进制文件包含数据,每个单独的字节可以是 ascii 字符、整数、指针等。这只是如何将数据写入文件以及如何将其返回。
【讨论】:
我找到了这个好网站mark0.net/hexdump.html 并上传了一个ASCII 文件,但我没有找到任何NULL 字符?或者网站可能需要修改:D 还是谢谢 只是因为一个文件没有 null 并不意味着 NULL 不是 ASCII 的一部分。根据 ASCII,它恰好是第一个 ASCII 字符:) cdrummond.qc.ca/cegep/informat/Professeurs/Alain/files/… 好。然后我很困惑。我不明白您如何通过上传一个文件并查看其内容来得出 ASCII 文件不具有 NULL 的结论? 我没有得出任何结论,我已经搜索和测试了。你这样做了吗? 这是一个旧答案,但为了记录:“ASCII 文件具有 NULL 字符”的一般性陈述具有误导性,而“ASCII 中的每个字符串都以 NULL 结尾”的陈述是错误的。 ASCII 文件只是一个仅包含 ASCII 字符的文件。它可能包含也可能不包含 NULL。 NULL 在 ASCII 文件中没有特定的含义,当然它也不会经常充当终止标记。正确的是,某些语言(例如 C)使用 NULL 来标记 RAM 中字符串的结尾。程序员可能决定在文件中也使用这种表示,但没有义务这样做。以上是关于x00 在二进制文件中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章