为什么Lua的字符串可以包含任何数字值的字符?

ZIF*_*IFF 1 lua

我在那里读了一些字符串:http://www.lua.org/pil/2.4.html

Lua是8位干净的,因此字符串可能包含任何数字值的字符,包括嵌入的零.

什么是8位清洁意味着什么?

为什么它可以包含任何数字值的字符?(与基本c字符串不同)

das*_*ght 9

存储字符串有两种常用方法:

  1. 人物和终结者
  2. 长度和字符

当你使用#1时,你需要"牺牲"一个角色作为终结者; 当你使用#2时,你没有这样的限制.

C使用第一种存储字符串的方法.它使用字符零作为终结符; 其他255个字符可用于表示字符串的字符.

Lua使用第二种存储字符串的方法.所有256个可能的字符值(包括零)都可以在Lua字符串中使用.例如,您可以构建从字符的三个字符'A',0,'B',和Lua将把它作为一个三个字符的字符串.您可以在C中构造相同的字符串,但其字符串处理库会将其视为单字符字符串:strlen将返回1,puts将写入字符A并停止,依此类推.