字符数据-character data
字符在计算机中主要有两种表示方法:1.ASCII, 2.Unicode(UTF-8),以下为两种编码的定义
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码。UTF-8用1到6个字节编码Unicode字符。这种编码实现了人类所有的语言和一些复杂的符号。
在UTF-8中,编码的长度是变化的,变化的方式参照下表:
也就是说,要根据所将要被储存的数据的bit的长度来决定是该数据是多少byte.
其转换方式如下:(假设给定的数据为十六进制)
1.将该十六进制的数据转换为二进制
2.根据转换的二进制的位数确定在UT8中需要多少bit才足够将该数据储存,并确定byte数。例如:一个十六位的数据 0xAA, 在转换为二进制之后为 1010 1010, 可见该数所需的bit为8,对比上表可见1byte UTF-8(7bits)是不足以保存此数据的,但是2byte(11bits)是足够的,所有这个数据0XAA在UTF-8中以2byte(11bits)来储存,所有原先的二进制数据可以在前补0,补满所需bits, 为000 1010 1010 (11bits)
3, 根据数据的byte数,转换为UTF-8形式。方式为, 每8bits写成1byte。如果该数据只需要1byte的大小则该字节的第一位为0即可,若该数据需要2bytes或多bytes, 则转换后第一byte的“1”的个数为所需byte的个数, 然后是0, 然后为第一byte的数据,其他byte以10开头即可,按此原则从左往右补满bit。例如上面的例子:所需byte为2,所以第一byte的1的个数为2,第一byte为 110 00010, 第二byte为10开头,为 10 101010,所以0xAA,在UTF中为 110 00010 10 101010。
one example:
€这个数据的十六位进制为0X20AC
1.转为二进制为 0010 0000 1010 1100
2此二进制的有效位为14,所需byte为3byte(16bits)
3.改写为UT8为:
第一字节 第二字节 第三字节
1110 0010 10 000010 10 101100