Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 不同的字符占用更多/更少的数据?_Text_Byte_Ascii - Fatal编程技术网

Text 不同的字符占用更多/更少的数据?

Text 不同的字符占用更多/更少的数据?,text,byte,ascii,Text,Byte,Ascii,我正在做一个个人项目,我想知道某些字符在文本文件中是否比其他字符占用更多的数据。我需要选择一个字符来分隔文件中的项目,但如果0使用的字节数少于a!或者什么的,最好这样做。我知道所有字符都有一个ASCII值,但ASCII值越低是否意味着字符可以存储在更少的字节中 这可能是一个非常愚蠢的问题,但我在网上没有看到关于这个主题的任何信息,所以我来这里查看 谢谢 一个字符是否会比另一个字符占用更多空间取决于您使用的字符集。某些字符集的宽度可变[1]。UTF-8就是这样一个字符集。以UTF-8为例,标准AS

我正在做一个个人项目,我想知道某些字符在文本文件中是否比其他字符占用更多的数据。我需要选择一个字符来分隔文件中的项目,但如果0使用的字节数少于a!或者什么的,最好这样做。我知道所有字符都有一个ASCII值,但ASCII值越低是否意味着字符可以存储在更少的字节中

这可能是一个非常愚蠢的问题,但我在网上没有看到关于这个主题的任何信息,所以我来这里查看


谢谢

一个字符是否会比另一个字符占用更多空间取决于您使用的字符集。某些字符集的宽度可变[1]。UTF-8就是这样一个字符集。以UTF-8为例,标准ASCII字符的宽度均为1字节,而扩展ASCII字符开始占用多个字节(最多6个)[2]

在您的示例中,对于“0”和“!”:两者都是标准ASCII,因此在UTF-8中都是1字节宽

参考文献:


  • 一个字符是否会比另一个字符占用更多空间取决于您使用的字符集。某些字符集的宽度可变[1]。UTF-8就是这样一个字符集。以UTF-8为例,标准ASCII字符的宽度均为1字节,而扩展ASCII字符开始占用多个字节(最多6个)[2]

    在您的示例中,对于“0”和“!”:两者都是标准ASCII,因此在UTF-8中都是1字节宽

    参考文献:


  • 您还可以通过将不同字符放入文件并使用
    ls-l
    stat-f“%N%z”
    命令检查文件大小来测试它们的大小

    test $cat a
    0
    test $cat b
    !
    test $cat c
    ક
    test $cat d
    æ
    test $stat -f "%N %z" *
    a 2
    b 2
    c 4
    d 3
    test $ls -l 
    total 32
    -rw-r--r--  1 spundun  wheel  2 Jun  2 14:10 a
    -rw-r--r--  1 spundun  wheel  2 Jun  2 14:10 b
    -rw-r--r--  1 spundun  wheel  4 Jun  2 14:11 c
    -rw-r--r--  1 spundun  wheel  3 Jun  2 14:13 d
    test $
    

    我相信每个文件都有一个额外的字节来表示文件
    EOF
    的结尾。因此,字符的大小分别为1、1、3和2。

    您还可以通过将不同字符放入文件并使用
    ls-l
    stat-f“%N%z”
    命令检查文件大小来测试不同字符的大小

    test $cat a
    0
    test $cat b
    !
    test $cat c
    ક
    test $cat d
    æ
    test $stat -f "%N %z" *
    a 2
    b 2
    c 4
    d 3
    test $ls -l 
    total 32
    -rw-r--r--  1 spundun  wheel  2 Jun  2 14:10 a
    -rw-r--r--  1 spundun  wheel  2 Jun  2 14:10 b
    -rw-r--r--  1 spundun  wheel  4 Jun  2 14:11 c
    -rw-r--r--  1 spundun  wheel  3 Jun  2 14:13 d
    test $
    

    我相信每个文件都有一个额外的字节来表示文件
    EOF
    的结尾。因此,字符的大小分别为1、1、3、2。

    这不是一个愚蠢的问题。这是一个奇怪而有趣的问题@内森:注意你的程序可能使用了127个ASCII字符。如果你想支持任何其他字符,答案会复杂得多。实际上我只使用了大约20个字符,很好。这不是一个愚蠢的问题。这是一个奇怪而有趣的问题@内森:注意你的程序可能使用了127个ASCII字符。如果你想支持其他字符,答案会复杂得多。实际上我只用了大约20个字符,都很好。谢谢你提供的信息!很高兴知道,我不需要从ASCII[0]和更高版本构建来保存字节或其他内容:p2小细节。(1) “扩展ASCII”不是真的,它是一个假装的东西,与Unicode无关。(2) “2003年11月,UTF-8受到RFC3629的限制……这删除了所有5字节和6字节的序列,以及大约一半的4字节序列。”因此,“代码点”的限制现在是4字节。我说“码点”而不是“字符”,因为“字符”有1245342个定义,在几乎所有的定义中,一个字符可能由许多码点组成;这是Unicode字符集的几种编码之一。感谢您提供的信息!很高兴知道,我不需要从ASCII[0]和更高版本构建来保存字节或其他内容:p2小细节。(1) “扩展ASCII”不是真的,它是一个假装的东西,与Unicode无关。(2) “2003年11月,UTF-8受到RFC3629的限制……这删除了所有5字节和6字节的序列,以及大约一半的4字节序列。”因此,“代码点”的限制现在是4字节。我说“码点”而不是“字符”,因为“字符”有1245342个定义,在几乎所有的定义中,一个字符可能由许多码点组成;这是Unicode字符集的几种编码之一。