GB2312汉字区位码、交换码和机内码

 1981年国家颁布了GB2312汉字标准共有6763个,其中一级3755,二级3008,还有682非汉字字符。并为每个字符规定了标准编码,便于在计算机内部相互转换。

作为GB2312标准只是定义了一张94×94的二维表。其中行为区号,列为位号。这样可以利用区号和位号来找到其中的汉字。这种编码就是我们所说的区位码。

比如

陈(1934)   区号:19   位号:34,为了处理与存储的方便,每个汉字的区号和位号在计算机内部分别用一个字节来表示
区位码无法于汉字进行通信,因为ASCII码中规定了OOH-1F作为控制码使用,这样就发生了冲突。由于计算机不是中国人发明的所以只能听从于国际标准ISO2022规定区号和位号都加上32,这样就防止冲突。经过加上32以后的编码称为国际交换码
陈-区号:19+32= 51
         00010011+00100000=00110011
   位号:34+32=66
         00100010+00100000=01000010
  即5166   16进制3342
由于文本中通常混合使用汉字和西文字符,汉字信息如果不予以特别标识,就会与单字节的ASCII码混淆。此问题的解决方法之一是将一个汉字看成是两个扩展ASCII码,使表示GB2312汉字的两个字节的最高位都为1。
这种高位为1的双字节汉字编码即为GB2312汉字的机内码,简称为内码。
00110011最高位变为1则从33变为B3
01000010最高位变为1则从42变为C2
这样一来,陈的机内码应该为B3C2
这里要说明的是不管你是采用什么样的输入法输入汉字,其汉字的机内码都是相同的。
如果要从一个汉字的机内码转换为区位码,其实就是相反的方向进行运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值