区位码、国标码、机内码转换

GB2312字符集在计算机采用的是2个字节(16位二进制)来表示,每个字节的最高位规定为1.

区位码

GB2312字符集放置在一个94行、94列的方阵中,组成了一个94×94的矩阵方阵。方阵的每一行称为一个“区”,每一列称为一个“位”。

区位码是一个四位十进制数,前两位叫做区码(01-94),后两位叫做位码(01-94)。

每个区位码都对应一个唯一的汉字或符号。例如:汉字“中”在第54行48列,我们称之它在54区48位,所以汉字“中”的区位码为5448。

国标码

国标码是一个 四位十六进制数,为了和ASCII码兼容,国标码的行号和列号分别要加上32(20H)。

并进行十六进制转换。

区位码与国标码转换

1、区位码(十进制)转换为十六进制。

例:以“中”为例。

区码:54(D)→36(H)

位码:48(D)→30(H)

备注:D代表十进制,H代表十六进制。

2、区码(十六进制后)和位码(十六进制后)加上20H得到国标码

36(H)+20(H)=56(H)

30(H)+20(H)=50(H)

所以国标码为5650(H)

机内码

机内码是计算机中真正存在的形式,是计算机进行存储、加工处理和传输所使用的代码。
因为汉字处理系统要保证中西文的兼容,当系统中同时存在ASCII码和汉字国标码时,将会产生二义性。
例如:汉字“中”的国标码是5650H,这两个字节的二进制分别 表示01010110和01010000,英文字母V和P的ASC码恰好对应这两个二进制代码。如果直接使用,计算机将无法识别这个代码是汉字“中”还是英文字母V和P。
为了更好的解决这个问题,我们将国标码两个字节的最高位都设为1,即每个字节分别加上十六进制的80H,这样就可以得到机内码。
即:汉字机内码=汉字国标码+8080H
汉字“中”的机内码为5650H+8080H=D6D0H。(56H+80H=D6,50H+80H=D0)

总结

区位码(由十进制转十六进之后)+2020H=国标码

国标码+8080H=机内码

给TA赞赏
共{{data.count}}人
人已赞赏
重要声明

本站部分资源来自网络,如有侵犯你的权益请联系管理员,QQ46520959 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索