首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

3.1K20

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

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

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

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

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

    98720

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

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

    49610

    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.1K20

    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

    2.5K40

    数据存储和内存对齐

    西文字符 在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。...在发生类型转换时,丢失的是高位的数据。因此小端方式存储,只需要知道首地址,向后裁剪或扩充就可以。 大端是将高位放在低地址,低位放在高地址。有符号数的最高位是符号位。

    18730

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

    因此转换结果是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.2K50

    《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

    75130

    缓存雪崩的处理办法

    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符号组成的代码。 【机器码】计算机直接使用的程序语言,其语句就是机器指令码。

    74121

    字符编码详解及由来

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

    91820

    程序 = 数据结构 + 算法《禅与计算机程序设计艺术》 陈光剑

    计算机,从顶层的应用程序往下看,处处都有抽象,处处都是编码和转换。我们没有办法,也没有必要弄清计算机的每个细节,但只要把握住了计算机的工作原理,弄清一些核心概念,还是能在一定抽象度上搞懂计算机。...国家标准GB2312-80中的汉字代码除了十进制形式的区位码外,还有一种十六进制形式的编码,称为国标码。...国标码是不同汉字信息系统之间进行汉字交换时所使用的编码,它的编码值不同于区位码,其值是分别对区号、位号增加32(十六进制数20H)。...汉字机内码也称“机内码”,简称“内码”,指计算机内部存储、处理加工和传输汉字时所用的由0和1符号组成的代码。机内码可以通过区位码计算出来,其值是分别对区号、位号增加160(十六进制数A0H)。...4.汉字处理流程 汉字通过输入设备将外码送入计算机,再由汉字处理系统将其转换成内码进行存储、处理、加工和传送,当需要输出时再由汉字处理系统调用字库中汉字的字形码得到输出汉字的结果 编码与映射的思想 数组与链表

    75310

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

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

    54420

    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版本中运行出现问题(性能、错误等),显示类型转换总是有最高的优先级,所以显示类型转换没有这种版本更替可能带来的问题...隐式类型转换是要消耗时间的,当然同等的显式类型转换时间也差不多,最好的方法就是避免类似的转换,在显示类型转换上我们会看到,最好不要将左值进行类型转换,到 时候有索引也用不上索引,还要建函数索引,索引储存和管理开销增大

    3K30

    GB2312编码_gb2312是简体中文的编码格式

    在区码和位码的基础上,分别加上0XA0的偏移,便是GB2312编码; 我们制作ASCII字库时,一般只做可以显示出来的字符字模,前面命令型的ASCII字符,我们不做字模,即从“空格开始”,ASCII...GB2312是在区位码的地址基础上分别偏移0xA0,每个区有94个汉字;每个汉字占用的字节为(16X16)/8=32个字节;汉字字库的第一个字符也是“空格”,但这个是全角的和ASCII的不一样;如我们再写液晶驱动程序显示一个英文字母时...的第一个字节,CodeL是GB2312的第二个字节,减一 是因为区位码是从第一区开始的,而字模数组表是从0开始的; (以上的计算均是按16*16取模时计算的) 当我使用单片机编程工具写程序时,编译的时候...,编译器会根据我们的选择(如MDK)会自动将字符串转换成机内码即GB2312形式进行存储,所以我们可以根据GB2312与区位码的关系进行寻找地址偏移。...如我们在液晶驱动程序中写一个中文汉字显示程序,void(uchar x,uchar y,uint16 hz ) 可以这样找区位码,CodeH=hz>>8; CodeL=hz&0x00ff; 注意英文和汉字的参数定义类型一个是

    1.4K20

    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的转换。

    1.9K00
    领券