Hongbo

Sep 29, 2020

浅谈字符

首先了解下ASCII

  • ASCII (American Standard Code for Information Interchange): 美国信息交换标准代码

  • 在计算机中,所有数据的存储都适用二进制数来表示,因为计算机用高低电平来表示1与0;例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,ASCII编码就是美国(ANSI)出台的供不同计算机在相互通信时共同遵守的西文字符编码标准,后来被ISO定为国际标准,适用于所有拉丁字母。

  • 起初,ASCII由七位表示,共可以表示128个字符;后在进化为由8位表示,可以表示256个字符。

  • 通俗的讲,该编码规则就是用简单的数字来特殊表示我们常用的一些字符(字母,符号,数字),例如:可以这样讲,在ASCII编码下,数字0就表示NULL,整数48就表示字符0

    [ASCII对照表](http://ascii.911cha.com)

编程语言(C)中的字符

  • C语言中,也用ASCII字符集来表示基本字符,一个字符类型char用一字节(8位)表示。

  • 字符字面量用单引号,里面包含一个或多个字符;如:’a’,’123’都是有效的字符字面量;

  • C11规定,一个字符字面量具有int类型(意为当我们可以把一个字符当作int类型来操作,如果我们想的话),如果将一个字符字面量赋值给一个char类型,那么将该字符字面量的最低有效位赋值给它。可以理解为字符类型只能够识别8位的数据,所以当使用多字符字面量或者int类型赋值给字符变量和想用字符形式表示时,都采用上述方法。

  • 不是所有的字符字面量都能回显在显示台,如控制字符’\n’,’\t’之类的特殊字符。

  • 用\后面紧跟1到3个八进制数,来用8进制编码表示一个字符,如:\7、\12、\123;用\x后面跟一个16进制数来用16进制编码表示一个字符,如:\x0a、\x30。

  • #在8位的范围内,char与int类型(无符号)可以看作兼容的#

其他字符编码

  • Unicode
  • GB2312(汉字编码)
  • GBK
OLDER > < NEWER