ASCII码众所周知全称为“美国信息交换标准码,AmericanStandardCodefo来自rInformationInterchange”。不能不佩服美国人,星并误刑战则甲界比庆酒我这里决不是崇洋媚外,美国人在计算机领域对人360问答类的贡献是绝对应该被我们所牢记的,对现代人来说,这些贡献丝毫不亚于中国人的四大发明反。言归正传,个人觉得了解ASCII的由来是理解ASCII码的最好方法。
一、背景
人们发明了计算机,并知道如何使用内存中的01英专01来表示数和机器码。但是人类最主要的信息展现形式是文本,如何用内存中的bit来表示文本一直困扰着人们,这种情况一直持续到ASCII码发明成功后才被“部分”[注1]解决。说免白了ASCII码就是解决了一个以数字形式表示文本的问题。
二、实例
让我们到幕后去看看,看看ASCII码是如何以数字形式表示文本的。举2个例子:
(1)ASCII码'A'--其内存存储字节2进制表示为"01000001"---其16进制值为0x41---其10进制值为65(听物施敌天脚量危加这里的值实际上是'A'在ASCII码表中编号);
验证过程:
charc='A';
printf("%c\n",c);/*A*/
printf("%x\n",c);/*41*/
printf("%d\n",c);/*65*/
(2)ASCII苗的独细让贵北巴码'6'--其内存存储字节2进制表示为"00110110"---其16进制值为0x36---其10进制值为54(这里的值实际上是'6'在ASCII罗龙威打迅量码表中的编号);
验证过程:
charc='6';
printf("%c\n",c);/*6*/
printf("%x\n",c);/*36*/
printf("%d\n",c);/*54*/
三、ASCII码通讯
利用ASCII码作为通讯方式到底是一种什从请培容为血缺治住么样的通讯方式呢?(FTP协议中有两种通讯方式,其中一种是ASCII码方式,即文本方式)常益尔形香只国这里也举例说明:比如我们要传令头布重钟死斯艺技送数值123,123数岁断印袁对入督值用16进制表示为0x7b,以二进制表示为01111011,那么以二进制方式通讯,01111011就是我们真实传送的数据,但是如果以ASCII码方式通讯,则完全不同了,如果你还传送01111011的话,对方那边的得到的将是'{'('{'对应的ASCII码用16进制表示为7b)。那么我们该如何怎么传呢?正确的方式就是将123每位上的数字转化为其相应的ASCII码,然后传送。这里'1'、'2'和'3'对应的AS飞CII码用16进制表示分别为0x31、0x32和0x33。这样组合起来后要传送的数据应为"001100010永院损引川式011001000110011"。
四、总结
一个字符串在内存中就是按照逐个字符的ASCII码连续存放的消果约兴训爱练功章油,我们在传送字符串时一般无需做特殊转换。