汉字区位码、国标码(交换码)和机内码转换方法 |
您所在的位置:网站首页 › 一个汉字的机内码与国标码 › 汉字区位码、国标码(交换码)和机内码转换方法 |
汉字区位码、国标码(交换码)和机内码转换方法
发布时间:2020-08-07 08:35:10
来源:网络
阅读:9876
作者:cdlaowang
栏目:网络安全
一、区位码 为了适应计算机处理汉字信息的需要,1981年我国颁布了GB2312国家标准。该标准选出6763个常用汉字(其中,一级常用汉字3755个,二级汉字3008个)和682个非汉字字符,并为每个字符规定了标准代码,以便在不同的计算机系统之间进行汉字文本交换。 GB2312字符集构成一个94行、94列的二维表,行号称为区号,列号称为位号,每一个汉字或符号在码表中的位置用它所在的区号和位号来表示。 为了处理与存储的方便,每个汉字的区号和位号在计算机内部分别用一个字节来表示。例如,"学"字的区号为49,位号为07,它的区位码即为4907,用2个字节的二进制数表示为: 00110001 00000111 二、国标交换码 区位码无法用于汉字通信,因为它可能与通信使用的控制码(00H~1FH)(即0~31)发生冲突。(因为ASCII码编码中分控制信号编码和有型字符编码,前32个是控制码,如回车、换行、退格等,为避开这些控制码,国标码规定在区位码的基础上加20H,即32的16进制数)ISO2022规定每个汉字的区号和位号必须分别加上32(即二进制数00100000),经过这样的处理而得的代码称为国标交换码,简称交换码或国际码,因此,"学"字的国标交换码计算为: 00110001 00000111 +00100000 +00100000 -------------------------- 01010001 00100111 用十六进制数表示即为5127H。 三、机内码 由于文本中通常混合使用汉字和西文字符,汉字信息如果不予以特别标识,就会与单字节的ASCII码混淆。此问题的解决方法之一是将一个汉字看成是两个扩展ASCII码,使表示GB2312汉字的两个字节的最高位都为1。这种高位为1的双字节汉字编码即为GB2312汉字的机内码,简称为内码。 因此,"学"字的机内码为: 11010001 10100111 用16进制表示即为D1A7H。 最后要指出的是,汉字的输入编码与汉字的机内码是不同范畴的概念。不管采用什么样的编码输入法(例如拼音、五笔字型等)来输入一个汉字,其机内码都是相同的。 四、总结 区位码、国标码与机内码的转换关系 方法: (1)区位码先转换成十六进制数表示 (2)(区位码的十六进制表示)+2020H=国标码; (3)国标码+8080H=机内码 举例:以汉字"大"为例,"大"字的区内码为2083 示例解析: 1、区号为20,位号为83 2、将区位号2083转换为十六进制表示为1453H 3、1453H+2020H=3473H,得到国标码3473H 4、3473H+8080H=B4F3H,得到机内码为B4F3H 5、1453H+A0A0H=B4F3H,得到机内码为B4F3H 6、机内码B4F3H-A0A0H=1453H的区位码 大字的区码是20H(32区,83位) 推荐阅读: XML文档和JTree之间转换方法 java中父类和子类的转换方法免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。 汉字 区码码 机内码 国标码 内 转换方法 上一篇新闻:java的位移符号 下一篇新闻:Linux NTP服务配置 for Oracle RAC 猜你喜欢 关于对SD卡出现故障以及数据丢失恢复的介绍 resin配置 国内常用DNS测试 CDN加速服务 java获取随机时间的源码片段 配置隔离组使二层之间不能相互通信,但能与外层互通 greenplum集群的搭建过程 ddos的防护措施 服务器出现丢包的原因是什么 Spark SQL外部数据源的机制以及spark-sql的使用 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |