首页
学习
活动
专区
圈层
工具
发布

刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系

它们是如何转换的,又为什么要这样转换? 下面以GB2312为例来加以说明(由于GBK、GB18030是以GB2312为基础扩展而来,因此编码实现方式与GB2312一样)。 一、区位码 1....也就是说,国标码相当于将区位码向后偏移了32,以避免与ASCII字符中0~32的不可显示字符和空格字符相冲突。 2....注意,国标码中是分别将区位码中的“区”和“位”各自加上32(20H)的,因为GB2312是DBCS双字节字符集,国标码属于双字节码,“区”和“位”各作为一个单独的字节。...四、为什么要加上20H和80H? 1. 区位码、国标码、内码的转换非常简单,但是令人迷惑的是为什么要这么转换?...看到这里,有人或许又要问了:如果仅仅是为了避免与ASCII编码相冲突,为什么最初不直接将区位码的区码和位码的最高位从0改为1(相当于各自直接加上128),这样不就无需经过国标码多此一举的中间转换了吗?

8.9K20

汉字机内码简介及转换工具

输入码被接受后就由汉字操作系统的“输入码转换模块”转换为机内码,与所采用的键盘输入法无关。...机内码是汉字最基本的编码,不管是什么汉字系统和汉字输入方法,输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。...例如:有两个字节的内容为30H和21H,它既可表示汉字“啊”的国标码,又可表示西文“0”和“!”的ASCII码。为此,汉字机内码应对国标码加以适当处理和变换。...汉字机内码、国标码和区位码三者之间的关系为:区位码(十进制)的两个字节分别转换为十六进制后加2020H得到对应的国标码;机内码是汉字交换码(国标码)两个字节的最高位分别加1,即汉字交换码(国标码)的两个字节分别加...80H得到对应的机内码;区位码(十进制)的两个字节分别转换为十六进制后加A0H得到对应的机内码。

7.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1.3 数字化信息编码与数据表示 计算机专业理论基础知识要点整理

    2.进制转换方法: 二进制/八进制/十六进制 转到 十进制 :采用按位权展开求和的方法。...3.基础要记住的转换。 基本转换: 28=256 29=512 210=1024 1字节,一共有8位二进制,刚好可以用2位16进制表示。 4....计算机内部采用二进制的主要原因: 1) 技术实现简单,计算机由逻辑电路组成,而逻辑电路通常只有两个状态,开关的接通和断开,这两种状态刚好用1和0表示。...3) 适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。 4) 易于进行转换,二进制与十进制数易于相互转换。...11.区位码、国标码、机内码转换: 第一步:区位码按照区号和位号分别转为十六进制。 第二步:(区位码的十六进制表示)+2020H=国标码 国标码+8080H=机内码 区位码+A0A0H=机内码

    1.4K20

    【自己动手画CPU】计算机数据表示

    闯关目的 第1关:汉字国标码转区位码实验 (1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换; (2) 理解字形码显示的基本原理...第2关:汉字机内码获取实验 (1) 掌握汉字机内码、区位码,最终利用相关工具批量获取一段文字的 GB2312 机内码,并利用简单电路实现 GB2312 编码与区位码的转换; (2) 理解字形码显示的基本原理...闯关内容 第1关:汉字国标码转区位码实验 在 logisim 中打开实验资料包中的 data.circ 文件,在对应电路中完成国标码转区位码的子电路设计。...其中输入引脚为16位的 GB2312 双字节国标码;输出为区号和位号(区号位号均从1开始计数),转换子电路引脚定义,请在电路中复制对应隧道标签信号使用,注意不要增改引脚,不要修改子电路封装,以免影响子电路在其它电路模块中的正常调用...第2关:汉字机内码获取实验 完成国标码到区位码的转换电路后,可以在汉字显示电路中进行测试,尝试电路中的 ROM 存储器中存入下面给出的指定句子,注意这里不允许使用逐字查码表的方式获得编码,应掌握批量转换的方法和原理

    1.1K10

    java获取所输入汉字拼音的首字母

    public class StringUtil {   //private static Log logger = LogFactory.getLog(StringUtil.class);   // 国标码和区位码转换常量...    static final int GB_SP_DIFF = 160;   //存放国标一级汉字不同读音的起始区位码    static final int[] secPosValueList =...3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086,   4390, 4558, 4684, 4925, 5249, 5600};   //存放国标一级汉字不同读音的起始区位码对应读音...* GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码 * 例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43 * 0x24转成10进制就是36...,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n’ */   static char convert(byte[] bytes) {   char result = '-';   int

    3.2K40

    MySQL处理乱码的步骤

    GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312。...基本集共收入汉字6763个和非汉字图形字符682个。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。...把换算成十六进制的区位码加上2020H,就得到国标码。国标码加上8080H,就得到常用的计算机机内码。1995年又颁布了《汉字编码扩展规范》(GBK)。...GBK与GB 2312—1980国家标准所对应的内码标准兼容,同时在字汇一级支持ISO/IEC10646—1和GB 13000—1的全部中、日、韩(CJK)汉字,共计20902字。...4、以上三步都做对了的话,所有中文都会被正确的转换成UTF-8格式存储进数据库。

    1.5K20

    数据存储和内存对齐

    西文字符 在ASCII码中,通过一个65的偏移量,使得一部分无符号数指向A-Za-z。 在C语言中,通过char类型的转换规范,可以将对应的01序列转换为英文输出。...GB2312-80 需要了解三种码之间的关系:区位码、国标码、机内码 国标码=区位码+2020H 机内码=区位码+8080H 区位码该怎么求呢?加就完了!...区是从A1开始的:第1区就是A1,第2区就是A2…第N区就是(A0+N)H 位也是从A1开始的:第1个字就是A1,第2个字就是A2…第N个字就是(A0+N)H 区位码就是区和位拼接。...也就是说: 小端存储的时候,数据的表示和存储顺序是相反的。也就是低位在前。 大端存储的时候,数据的表示和存储顺序是相同的。也就是高位在前。 上面的例子给人的感觉不是很直观:0x123456。...在发生类型转换时,丢失的是高位的数据。因此小端方式存储,只需要知道首地址,向后裁剪或扩充就可以。 大端是将高位放在低地址,低位放在高地址。有符号数的最高位是符号位。

    66830

    基于Logisim的汉字显示实验报告

    ,我也没看出来,反正就是连线完成了)上个实验主要是设计的这个加法器,并行加法器和串行加法器,我就没发,这个实验遇到了很多的问题,也总结了很多的技巧,所以就总结记录一下,希望对大家有所帮助;2.实验的内容和目的设计这个数码之间的转换...(区位码和国标码);进行仿真实验,使用这个logisim软件操作;3.实验要点总结3.1加法器转码就是使用加法器实现这个码值的转换,这个里面为我们提供了一些相关的内容,我们需要使用这个加法器实现转换,主要就是这个...)ASCII/GBK/GB2312中文汉字区位码,内码,编码在线查询软件下面的这个就是第二个链接,直接输入文字,点击字转码即可,下面的这个编码的方式,输出方式和强制全角和我的保持一致就可以了,一般这个都是默认的...读取之后,我们的只读存储器里面的内容就会发生修改;3.5如何进行模拟设置时钟频率:这个决定了我们的数字的转换的速度,频率越大,这个转换的速度越快;启动信号模拟,这个时候软件就会按照我们刚才修改的编码进行读取...,现实对应的汉字;如果想要重开:点击重置模拟器即可;如果显示的汉字不对,有两个原因:1)编码不对(要么是转换的不对,要么是没有更新成功);2)加法器不对,就是我们的国标码转换为区位码的这个加法器的设计有问题

    48810

    计算机组成原理-计数制与定点数编码

    因此转换结果是0.07676… 转换时出现无限小数是正常的,只需要保留有效位数即可 真值与机器数 真值是符合人类习惯的数字,是带有符号的 机器数是存粹的以数字形式保存的数字,它不带有任何符号,而是把符号也抽象为一个数字...: 0: 48 A~Z: 65~90 a~z: 97~122 汉字编码 在1980年,中国推出了GB-2312标准,总共拥有7445个常用汉字 GB-2312标准采用区位码来表示汉字,共有94个区和94...个位,区和位分别使用一个字节表示,一个汉字字符占两个字节 由于汉字编码也使用了ASCII中的控制字符,为了避免冲突,需要将区位码全部加上32,这样就避开了ASCII码中的控制字符区域,将区位码加上32就得到国标码...(GB-2312) 为了避免国标码与ASCII码冲突,在存储时,需要将国标码全部加上128,这样所有的汉字都落到了128255的范围,而ASCII码全部落到了0127的范围,于是得到了汉字内码 在输入汉字时...+0 和 -0 反码 反码的最高位也是符号位,当符号位为0时,反码与原码相同,当符号位为1时,反码的数值位与原码相反。

    1.7K50

    基于Logisim的汉字显示模拟实验

    ,我也没看出来,反正就是连线完成了) 上个实验主要是设计的这个加法器,并行加法器和串行加法器,我就没发,这个实验遇到了很多的问题,也总结了很多的技巧,所以就总结记录一下,希望对大家有所帮助; 2.实验的内容和目的...设计这个数码之间的转换(区位码和国标码); 进行仿真实验,使用这个logisim软件操作; 3.实验要点总结 3.1加法器转码 就是使用加法器实现这个码值的转换,这个里面为我们提供了一些相关的内容,我们需要使用这个加法器实现转换...,可以直接复制粘贴,很方便; 查看字符编码(简体中文) ASCII/GBK/GB2312中文汉字区位码,内码,编码在线查询软件 下面的这个就是第二个链接,直接输入文字,点击字转码即可,下面的这个编码的方式...,输出方式和强制全角和我的保持一致就可以了,一般这个都是默认的; 接下来的这个很重要:这个我是在一个视频里面学到的,我们需要把这个GB2312这个框框里面的字符码进行修改成为我们想要的汉字的,点击这个左下角的内容...,现实对应的汉字; 如果想要重开:点击重置模拟器即可; 如果显示的汉字不对,有两个原因: 1)编码不对(要么是转换的不对,要么是没有更新成功); 2)加法器不对,就是我们的国标码转换为区位码的这个加法器的设计有问题

    51610

    《Java从入门到失业》第三章:基础语法及基本程序结构(3.6):基本数据类型及字符集编码(字符编码和char型)

    ,这个位置可以用区号、位号合成表示,称为字符的区位码。...如第一个汉字“啊”出现在第16区的第1位上,其区位码为16 01。这样所有的字符都可通过其区位码转换为数字编码信息。...实际发布的国标码是通过把区位码都加上32,例如汉字“啊”的国标码是48 33(16+32,01+32)。一般用十六进制表示0x3021。...但是这里还有个问题,因为国标码的高、低字节取值范围都是在32-126之间,例如汉字‘徕’在GB2312中的国标码为97 98,而两个英文字母‘ab’的存储码也是97,98。...例如汉字‘徕’的区位码为6566(0x4142),其机内码为0xE1E2,转换过程为: 区位码 国标码 高位转换 低位转换 机内码 0x4142 0x6162 0x61+0x80=E1 0x62+0x80

    1K30

    缓存雪崩的处理办法

    Mysql优化器的参考标准 mysql的索引是由mysql的server层的优化器决定的 2.Memcache和Redis单个key大小限制 Memcache单个key(变量)存放的数据有1M的限制 Redis...opcode 是Php脚本编译后的中间码,Zend引擎将源文件转换成opcode代码,然后在虚拟机上运行 缓存opcode 后 可以加快网站的运行速度 用apc 或者xcache 缓存可以缓存php的opcode...这个目录下的所有文件都是隐藏文件(以.点开头的文件)。 23. 国标码,区位码,机内码,机器码的区别?...【国标码】指国家标准汉字编码:GB-2312 【区位码】区位码在GB-2312中预留了一些空位,便于补充和扩展 【机内码】汉字ASCII码。...指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。 【机器码】计算机直接使用的程序语言,其语句就是机器指令码。

    1K21

    字符编码详解及由来

    晶体管没有机械运动的部件,它通过电信号在通和断两种状态之间转换。晶体管的通/断转换使微处理器能够完成工作。...这样所有的字符在方阵中都有一个唯一的位置,这个位置可以用区号、位号合成表示,称为字符的区位码。如第一个汉字“啊”出现在第16区的第1位上,其区位码为1601。...因为区位码同字符的位置是完全对应的,因此区位码同字符之间也是一一对应的。这样所有的字符都可通过其区位码转换为数字编码信息。   中国人民看到这样很不错,于是就把这种汉字方案叫做 "GB2312"。...GB2312是ANSI编码的一种,即对 ASCII 的中文扩展。是中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码。...我在下一节会解释little endian和big endian的涵义。 4)UTF-8编码,也就是上一节谈到的编码方法。 选择完”编码方式“后,点击”保存“按钮,文件的编码方式就立刻转换好了。

    1.3K20

    刨根究底字符编码之零——前言

    而在编程实践中,如果不发扬死磕到底的精神将字符编码问题的来龙去脉、前世今生彻底搞清楚,那么它终将会像幽灵一样挥之不去,导致时不时地被各种与字符编码相关的“灵异”事件折磨得死去活来。...本人正是在经受了字符编码所带来的种种令人崩溃的痛苦之后,才在痛定思痛之余,最终痛下决心,誓要将它刨根究底。 二、 字符编码的基础性、重要性,主要体现在它涉及面广。...其中,字节序、正则表达式跟字符编码的关系又密切相关,尤其是字节序,直接影响字符编码的字节序列。...EASCII(Extended ASCII)以及ISO/IEC 8859字符编码方案 五)汉字编码方案:GB2312、GBK、GB18030、GB13000、全角与半角、CJK中日韩统一表意文字 六)汉字编码中区位码...、国标码(交换码)、内码(机内码)、外码(输入码)、字形码(输出码)的区别及关系 七)ANSI编码 八)代码页(Code Page)、微软与ANSI代码页 九)Unicode编码方案的面世 十)Unicode

    74420

    sql的隐式转换_js强制转换和隐式转换

    Oracle 隐式转换 1 Oracle 隐式转换 Oracle中对不同类型的处理具有显式类型转换(Explicit)和隐式类型转换(Implicit)两种方式,对于显式类型转换,我们是可控的,但是对于隐式类型转换...1.1 隐式转换发生场景 1.对于INSERT和UPDATE操作,oracle会把插入值或者更新值隐式转换为字段的数据类型。...注:select * from text where id=1;相当于select * from text where to_number(id)=1 如果id列建有索引此时将失效 3.当比较字符型和日期型的数据时...隐式类型转换的算法或规则,以后Oracle可能改变,这是很危险的,意味着旧的代码很可能在新的Oracle版本中运行出现问题(性能、错误等),显示类型转换总是有最高的优先级,所以显示类型转换没有这种版本更替可能带来的问题...隐式类型转换是要消耗时间的,当然同等的显式类型转换时间也差不多,最好的方法就是避免类似的转换,在显示类型转换上我们会看到,最好不要将左值进行类型转换,到 时候有索引也用不上索引,还要建函数索引,索引储存和管理开销增大

    4.2K30

    BCC和libbpf的转换

    BCC和libbpf的转换 本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。 为什么是libbpf和BPF CO-RE?...一开始将BCC转换为普通的BPF CO-RE时,可能会感到不适和困惑,但很快就会掌握它,并在下次遇到编译或验证问题时欣赏libbpf的明确性和直接性。...BPF 代码转换 本章节会检查常用的转换流,并概述BCC和libbpf/BPF CO-RE之间存在的典型的不匹配。通过本章节,希望可以使你的BPF代码能够同时兼容BCC和BPF CO-RE。...但对于老版本的内核以及其他BPF程序类型(如Tracepoints和kprobe),最好将其转换为BPF_CORE_READ。...有时只是一个误解,有时是因为BCC和libbpf实现上的差异导致的。下面给出了一些典型的场景,可以帮助更好地进行BCC到BPF CO-RE的转换。

    2.2K00
    领券