C程序实现汉字内码与GB码

C程序实现汉字内码与GB码,第1张

C程序实现汉字内码与GB码,第2张

// HZEncode.cpp:定义控制台应用程序的入口点。

//

/*

参考资料:

汉字的编码和表示

1)汉字交换码(国标码)汉字交换码(国标码)主要用于汉字信息交换。

国家标准码:国家标准局1980年颁布的《信息交换用汉字编码集基本集》(代号为GB2312 80)中规定的汉字交换码作为国家标准汉字码。GB2312 80共有7445个字符符号:汉字6763个,一级汉字3755个(按汉语拼音字母顺序排列),二级汉字3008个(按部首笔画顺序排列),非汉字682个。根据GB2312 80,所有带有国家标准码的汉字和符号构成一个94×94的方阵。在这个正方形矩阵中,每行称为一个“区域”,每列称为一个“位”。这个方阵实际上构成了一个汉字集,有94个区域(编号从01到94),每个区域有94位(编号从01到94)。汉字的区号和位置号的组合构成了汉字的“位置码”。其中,上面两位是区号,下面两位是位置号。这样,定位码可以准确地确定某个汉字或字符;相反,任何一个汉字或符号对应一个位置码,不存在重码。

区号的分布如下:

1区键盘上没有的各种符号,2区各种序号,3区键盘上的各种符号(中文给出),4 -5,6区日文字母,7区希腊字母,8区俄文字母,拼音声调名称。9区制表符号10- 15区未使用的一级汉字16-55区(按字母顺序)二级汉字56- 87区(按部首笔画顺序)88

从上面可以看出,汉字和符号的全部94个区域可以分为四组:

①1-15区:为图形符号区。区域1 9是标准符号区域;区域15是自定义符号区域。

②16-55区:一级汉字区,包含3755个汉字。这些地区的汉字按汉语拼音顺序排序,同音字按笔画顺序排列。

③56-87区:为二级汉字区,包含3008个汉字。这些地区的汉字按照偏旁笔画的顺序排序。

④88-94区:是自定义汉字区。

国标代码规定每个汉字(包括汉字以外的一些符号)用一个2字节代码表示。每个字节的位为0,只使用低7位,低7位的34个码适合控制,所以汉字只使用每个字节的27-34 = 94个码。2个字节有94 94=8836个汉字码。代表一个汉字的2个字节中,高字节对应编码表中的行号,称为区号;低位字节对应编码表中的列号,称为标签号。

汉字国家标准码的范围用二进制表示:0010001 0010001 011110 0111110(1+32)10(94+32)10(94+32)107位ASCII码是由128个字符组成的字符集。其中编码值031(000000000000001111)不对应任何打印字符,通常称为控制字符,用于计算机通信中的通信控制或计算机设备的功能控制。代码值32(00100000)是空字符SP。代码值127 (111111)是删除字符del。

汉字标准码的起始二进制位置为00100001 (33)10,以跳过ASCII码的32个控制字符和空字符。因此,中国国家标准码的高低位分别比对应的区号大(32)10或(0010000) 2或(20)H,即国家标准码的高位=区号+20H (H代表十六进制),国家标准码的低位=区号+20H。

2)汉字内码(内码)(汉字存储码)

汉字内码(内码)(汉字存储码)的作用是统一不同汉字输入码在计算机中的表示。为了统一计算机中的各种汉字输入码,有一种专用于在计算机中存储汉字的汉字内码,用于将输入中使用的各种汉字输入码转换成汉字内码进行存储,以方便计算机中的汉字处理。汉字内码是在计算机中存储和处理的代码。计算机必须同时处理汉字和英语。因此,计算机必须能够区分汉字和英文字符。英文字符的内置码是8位ASCII码,带0。为了不与7位ASCII码冲突,国标码每个字节的位由0改为1,其余位不变的码作为汉字的内码。

汉字内码的范围用二进制表示:10100001 1010001 11110 1111110。内码的高低位比相应的国家标准码大(128)10或(1000000) 2或(80)。H:内码高位=国码高位+80H,内码低位=国码低位+80H,又因为:国码高位=区码+20H,国码低位=位码+20H,所以:内码高位=区码+A0H,内码低位=位码+A0H,也就是说内码高位和低位是(160)10或(1010000) 2或(a00例如,汉字“啊”的区号是“1601”,其中区号是(16)10或(10)H,位码是(01)10或。那么:内码高位= 10H+A0H = B0H,内码低位= 01H+A0H = A1H,所以:内码= B0A1H

以下是引文:

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C程序实现汉字内码与GB码

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情