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

为什么是Lua';s字符串可以包含任何数值的字符?,lua,Lua,我在那里读到一些关于弦的东西: Lua是八位干净的,因此字符串可能包含具有任何数值的字符,包括嵌入的零 八位清洁是什么意思 为什么它可以包含任何数值的字符?(与基本c字符串不同)存储字符串有两种常用方法: 字符和终止符 长度和字符 当你使用#1时,你需要“牺牲”一个角色作为终结者;当您使用#2时,您没有这样的限制 C使用第一种存储字符串的方法。它使用字符零作为终止符;其他255个字符可用于表示字符串的字符 Lua使用第二种存储字符串的方法。所有256个可能的字符值(包括零)都可以在Lua字符串

我在那里读到一些关于弦的东西:

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

八位清洁是什么意思


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

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

  • 字符和终止符
  • 长度和字符
  • 当你使用#1时,你需要“牺牲”一个角色作为终结者;当您使用#2时,您没有这样的限制

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


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

    Lua字符串类型是一个已计数的字节序列。一个字节可以保存0到255之间的任何值

    字符串类型用于字符串。您是对的,很少有字符集编码允许任何字节值或字节值序列。代码页437就是这样的一页;它将256个字符映射为256个值,每个字符一个字节。Windows-1252没有;它将251个字符映射到251个值,每个字符一个字节。UTF-8将1112064个字符映射到一到四个字节的序列,其中一些字节值不使用,一些值序列不使用

    Lua字符串库确实具有将字节视为字符的函数。它们的行为受实现库的影响,实现库通常使用C运行时及其语言环境特性


    Lua有专门的库来显式处理各种字符集编码

    一,。2.请不要犹豫,使用您选择的搜索引擎查找简单问题的详细答案。C字符可以包含任何数值。“C”语言的字符只存储非常有限的数值范围。