我在那里读到了一些关于字符串的东西: http ://www.lua.org/pil/2.4.html
Lua 是8 位干净的,因此字符串可以包含任何数值的字符,包括嵌入的 zeros。
那八位清洁是什么意思?
为什么它可以包含任何数值的字符?(与基本 c 字符串不同)
我在那里读到了一些关于字符串的东西: http ://www.lua.org/pil/2.4.html
Lua 是8 位干净的,因此字符串可以包含任何数值的字符,包括嵌入的 zeros。
那八位清洁是什么意思?
为什么它可以包含任何数值的字符?(与基本 c 字符串不同)
有两种常用的存储字符串的方法:
使用#1时,需要“牺牲”一个角色作为终结者;当你使用#2 时,你没有这样的限制。
C 使用第一种存储字符串的方法。它使用字符零作为终止符;其他 255 个字符可用于表示字符串的字符。
Lua 使用第二种存储字符串的方法。所有 256 个可能的字符值,包括零,都可以在 Lua 字符串中使用。例如,你可以用字符'A'
, 0
, 'B'
, 构造一个三字符的字符串,Lua 会把它当作三字符的字符串。您可以在 C 中构造相同的字符串,但其字符串处理库会将其视为单字符字符串:strlen
将返回1
、puts
写入字符A
和停止,等等。
Lua 字符串类型是一个计数的字节序列。一个字节可以保存 0 到 255 之间的任何值。
string 类型用于字符串。你是对的,很少有字符集编码允许任何字节值或字节值序列。代码页 437 就是这样;它将 256 个字符映射到 256 个值,每个字符一个字节。Windows-1252 没有;它将 251 个字符映射到 251 个值,每个字符一个字节。UTF-8 将 1,112,064 个字符映射到 1 到 4 个字节的序列,其中一些字节值没有使用,一些值序列没有使用。
Lua 字符串库确实具有将字节视为字符的函数。它们的行为受实现的库的影响,该库通常使用 C 运行时及其语言环境特性。
Lua 有专门的库来显式处理各种字符集编码。