了解ASCII如何工作的麻烦

时间:2015-05-02 22:18:54

标签: encoding byte ascii bit

我对ASCII编码几乎没有疑问:

  1. 为什么ASCII编码中有127个字符可以定义?它应该是7位,这意味着2到7的幂,等于128.缺少一个字符在哪里?
  2. 当我将文本文件保存为textfile.txt时,它应该以ASCII编码保存吗?但是当我在文件中写入10个字符时,它有10个字节,即80位,不应该是70吗?
  3. 如何将文件保存为一种每个字符有7位的ASCII码?
  4. 某些软件是否仍使用ASCII编码存储信息?

3 个答案:

答案 0 :(得分:2)

  

1)如何在ASCII编码中定义127个字符?它   应该是7位,这意味着2等于7的幂   128 ...缺少一个字符

NUL字符,其ASCII码为0.这就是你错过的那个。

  

2)当我将文本文件保存为textfile.txt时,应将其保存   ASCII编码对吗?但是当我在文件中写入10个字符时   它有10个字节,即80位,不应该是70?

存储系统(和主存储器)倾向于使用一个字节作为存储的最小信息,因此一个标准ASCII字符的文件每个字符浪费一位。非英语用户对此表示感谢,因为它允许将ASCII扩展到8位,从而提供代码来存储突出的人声和类似的东西。

  

3)如何将文件保存为一种每码7位的ASCII码   性格?

确保所有文件内容都是ASCII标准。但是,您不会恢复那些丢失的位。不过,压缩算法可能会利用这一点来挤压文本文件。

  

4)一些软件仍然使用ASCII编码来存储   信息?

绝大多数软件甚至使用ASCII来编码非ASCII的东西。值得注意的例子:电子邮件,以及您正在阅读的这个页面的HTML源代码。

答案 1 :(得分:2)

1)Ascii有128个值,但它们像大多数计算机阵列一样从0-127枚举。 0表示null 2)ascii适合8位,或者你使用扩展的8位版本 3)定义自己写入字节流的程序,然后自己检查字节 4)大多数可读文本都是使用UTF编码的,但只需要基本字符的东西,比如计算机代码,仍然可以使用ascii。

答案 2 :(得分:0)

退后一步......

ASCII是一种古老的,几乎过时的字符集。也就是说,几乎所有使用的字符集都是ASCII的超集并具有兼容的编码。例如,Unicode具有UTF-8编码,该编码映射与ASCII相同的前128个字符的字节。 Windows-1252有251个字符,前128个与ASCII相同。

许多现代编程环境使用Unicode(至少是源代码和/或字符串):Java,.NET,XML,HTML,....

因此,如果您正在阅读文件,请不要认为它是ASCII。而且,如果您正在编写文件,如果编程环境使用Unicode并且强制输出为ASCII,则可能会丢失数据。在任何一种情况下,读者和作者都应该知道预期的字符集和编码。