不同的字符需要更多/更少的数据?

时间:2014-06-02 20:38:57

标签: text byte ascii

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

在你的例子中,' 0'和'!':两者都是标准的ASCII,因此两者的宽度均为1字节(UTF-8)。

<强>参考文献:

     
  1. Variable Width Encoding (Wikipedia)
  2.  
  3. UTF-8 Description (Wikipedia)

答案 1 :(得分:1)

您还可以通过将不同字符放入文件并使用ls -lstat -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。