区位码、国标码与机内码的转换只是分享
- 格式:ppt
- 大小:392.00 KB
- 文档页数:4
西文ASCII码用单字节表示,中文机内码用双字节表示。
所以,为了计算机内部能区分中西文,中文的各字节最高位为1。
为了便于编号,国家标准将汉字按拼音顺序分为几大块(即“区”),各汉字在特定区中的序号称为该汉字的“位”,所以汉字的区位码是两个十进制数联合表示的汉字位置。
如汉字“啊”的区位码为1601,表示它位于16区第一位。
汉字的区码和位码转换为16进制再分别加上20H即为国标码;(加20H表示各字节增加十进制32,因为ASCII值1~32表示非图形字符)
国标码的高字节和低字节分别加80H即为机内码。
或者区位码的高字节和低字字分别加上A0H即为机内码(A0H=20H+80H)。
例:
汉字“中”:
区位码:5448
国标码:8680 (01010110 01010000 B)
机内码:D6D0 H(11010110 11010000 B)。
Windows中区位码转换为机内码
步骤的简化
区位码的区和位分别加上32得到国标码, 再分别加上128得到机内码
区位码的区和位分别加上160得到机内码
区位码加上A0A0H = 机内码
⽰例: 我
我的区位码是4650
区位码 4650 = 46 50 = 2E 32H
国标码 2E32H + 2020H = 4E52H
机内码 4E52H + 8080H = 20050H + 32896H = 52946
说明
H表⽰⼗六进制
在windows中可以按下alt+机内码输⼊字符
2020H = 32 32: 由于GB2312对ASCII的32个控制字符进⾏保留, 所以将汉字编码向后偏移32位
8080H = 128 128: 为了兼容ASCII, 所以将最⾼位设为1, 也就是+ 100000000 = + 80
区位码: 根据GB2312-80标准, 国内所有的汉字或符号都有⼀个唯⼀的4位16进制的国标码和4位10进制的区位码; 其中前两位叫做区码, 后两位叫做位码国标码: GB1312的规范编码
机内码: 微软为了解决GB2312和ASCII兼容问题, 将最⾼位设为1⽽产⽣的编码。
1.查一下国标码、区位码、汉字内码一样么?有什么区别?答:国家标准汉字交换码(国标码):我国制定了“中华人民共和国国家标准信息交换汉字编码”,标准代号为GB2312—80,这种编码又称为国标码。
在国标码的字符集中共收录了一级汉字3755个,二级汉字3008 个,图形符号682个,三项字符总计7445个。
国标码是指1980年中国制定的用于不同的具有汉字处理功能的计算机系统间交换汉字信息时使用的编码。
国际码是二字节码, 用两个七位二进制数编码表示一个汉字。
目前国标码收入6763个汉字, 其中一级汉字(最常用)3755个, 二级汉字3008个, 另外还包括682个西文字符、图符。
一级汉字为常用字,按拼音顺序排列,二级汉字为次常用字,按部首排列。
国标码的范围是2121H—7E7EH。
区位码:国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以大家常用的是区位码,它的前两位叫做区码,后两位叫做位码在国标GB2312—80中规定,所有的国标汉字及符号分配在一个94行、94列的方阵中,方阵的每一行称为一个“区”,编号为01区到94区,每一列称为一个“位”,编号为01位到94位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。
区位码的前两位是它的区号,后两位是它的位号。
用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。
汉字“母”字的区位码是3624,表明它在方阵的36区24位,问号“?”的区位码为0331,则它在03区3l位。
所有的汉字和符号所在的区分为以下四个组:(1)01区到15区。
图形符号区,其中01区到09区为标准符号区,10区到15区为自定义符号区。
01区到09区的具体内容如下;1)01区。
一般符号202个,如间隔符、标点、运算符、单位符号及制表符;2)02区。
汉字机内码计算国标码第一字节
国标码(GB2312)是一种双字节编码,用于表示简体中文字符。
在GB2312编码中,每个汉字由两个字节表示,其中第一个字节的范
围是0xA1-0xF7,而第二个字节的范围是0xA1-0xFE。
在计算国标码第一字节时,我们可以使用以下公式:
第一字节 = (汉字区码 0xA0)/ 94 + 0xA0。
其中,汉字区码是指汉字所在的区号,范围是1-94。
假设我们
要计算汉字“中”的国标码第一字节,它的区位码为163(十进制),那么计算过程如下:
(163 0xA0)/ 94 + 0xA0 = 3 + 0xA0 = 0xA3。
因此,汉字“中”的国标码第一字节为0xA3。
需要注意的是,GB2312编码是一种早期的编码标准,在实际应
用中已经被更先进的编码标准如GBK和UTF-8所取代。
已知江苏两字的区位码是2913和4353,其机内码是___
解析:1980年,为了使每一个汉字有一个全国统一的代码,我国颁布了第一个汉字编码的国家标准:
GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。
区位码是一个四位的十进制数,每个区位码都对应着一个唯一的汉字或符号,它的前两位叫做区码(即汉字或符号所在的行号),后两位叫做位码(即汉字或符号所在的列号)。
‘江’字的区位码是2913,表明‘江’在29行13列
行号用那个一个字节表示,列号也用一个字节来表示
所以汉字占两个字节
区位码分别加上32(十进制)得到国标码,国标码一般用十六进制表示
以‘江’为例:
29 13
+ 32 32
61 45转化成十六进制为3D 2D即‘江’的国标码
为3D 2D
国标码每个字节再分别加上128得到机内码
61 45
+ 128 128
189 173 转化成十六进制为BD AD即‘江’的机
内码为BD AD。
汉字区位表(1)区位码先转换成十六进制数表示(2)(区位码的十六进制表示)+2020H=国标码;(3)国标码+8080H=机内码区码和位码都是十进制数,换算为机内码时,要把区码和位码分别换算为16进制码1D和0D。
1D0D+A0A0=BDAD。
为什么要加A0A0?这是转换原理规定的。
具体过程1.区位码(十进制)转换成区位码(十六进制)。
这里要把前两个位换成十六进制,然后后两位换成十六进制。
例如,某汉字的区位码是2913,这样把29转换为16进制数1D;再把位码13转换为16进制数为0D,得到十六进制数1D0D。
2.国际码=区位码(十六进制)+2020H例如,1D0DH+2020H=3D2DH 得到国标码GB23123.汉字机内码=国际码+8080H机内码就是3D2DH+8080H=BDADH十六进制B0A1先把区位码对应的十进制转换成十六进制,然后加上2020H变成国标码,最后在加上8080H变成机内码,具体过程:1.16->10H 01->01H1601=1001H2.1001H+2020H=3021H3.3021H+8080H=B0A1H汉字是两个字节组成的。
比如GB2312-80。
每个汉字及符号以两个字节来表示。
第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”)。
“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上 0xA0)。
由于一级汉字从16区起始,汉字区的“高位字节”的范围是0xB0-0xF7,“低位字节”的范围是0xA1-0xFE,占用的码位是72*94=6768。
其中有5个空位是D7FA-D7FE。
例如“啊”字在大多数程序中,会以两个字节,0xB0(第一个字节) 0xA1(第二个字节)储存。
区位码=区字节+位字节(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。