购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.9 什么是ASCII

这个非常重要,先写一个程序:


# include <stdio.h>
int main(void)
{
    char ch = 'A';
    printf("ch = %c\n", ch);
    return 0;
}

这个是将字符'A'输出了,但是如果将printf中的%c改成%d会怎样?编译一下试试,它不会报错。想想为什么不会报错?因为不管是什么类型的数据,在内存中都是二进制的,所以不会报错。%c和%d只是输出时显示的方式不一样而已。

当将%c改成%d并链接、执行后输出的就不是字符'A',而是一个数字“65”。这说明字符'A'是以65这个十进制数对应的二进制代码存储的。那么到底什么叫ASCII?ASCII就是规定了某个字符使用哪个整数保存。因为计算机中保存的都是二进制代码,所以不可能将一个字母直接保存到计算机中。它要先转化为二进制代码才能保存进去。而每个二进制代码都对应一个十进制数,这就是ASCII。

ASCII不仅是一个值,更是一种规定。它规定了每个字符使用哪个整数表示。比如它规定了'0'用48表示、'A'用65表示,'a'用97表示……为了便于表述,通常也称这些值为ASCII值。那么ASCII值的范围是多少呢?我们前面说过,一个字符占一字节,而一字节所能表示的十进制数范围为0~255,所以ASCII值的范围就是0~255。其中常用的是0~127,剩下的128~255称为扩展ASCII。扩展ASCII我们一般不用,知道就行了。事实上0~127中也只有字符'0'~'9'、'A'~'Z'、'a'~'Z'常用。

一定要记住什么是ASCII。但ASCII值不需要记,如果要用的话查一下ASCII表就行了。一般情况下连ASCII表都不用查,因为用得很少,而且即使要用也没有必要查表。等后面讲字符串的时候笔者会教大家如何在完全不知道ASCII值的情况下将小写字母转化为大写字母。

此外除了ASCII这种规定外还有GB2321码、UTF-8码等,它们都是规定一个字符用哪个整数表示,只不过因为它们是不同的规定,所以同一个字符所用的整数不一样。

综上可知,因为字符对应的就是一个整数,所以字符的存储方式本质上与整数的存储方式一样,即转化为二进制时的规则是一样的。 vJaU8364H3vXEi7Jz7BfSzGLFEabxQq2HAsff1++iPTyeZA1mXg5GWUYGBE+NDq5

点击中间区域
呼出菜单
上一章
目录
下一章
×