print('hi'+chr(0)+'hello')
实际上会打印出带有空格的 hi hello
(在Python 2.7和3.6.1中测试过)。虽然chr(0)绝对是空字符,但由于某种原因,Python似乎将其打印为空格。 - Zinkichr(0)
是NULL
字符,非常重要,而chr(32)
是空格' '
。NULL
字符的作用是终止字符串。因此,像x = "abcd"
这样的代码实际上是x = "abcd\00"
,其中\00
当然与chr(0)
相同。如果没有null字符,您将无法确定字符串的结尾,因为可能会发生以下情况:您逐字节读取字符串,但在"abcd"
之后,存储在内存中的其他内容y = "efgh"
。如果x
末尾没有null字符,则调用print(x)
将打印'abcdefgh'
,甚至可能还有更多不属于x
的垃圾,因为计算机不知道何时停止。
实际上 chr(n) 返回的不是 ASCII 码,而是 n 的 Unicode 代码点。第一个元素的 Unicode 恰好与 ASCII 相同。
你可以自己试试:chr(15265)
在 Python 3.6 中返回 '㮡'。
chr()
只能处理ASCII字符。 - poke