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

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

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

2.2K10

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

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

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

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

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

85320

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

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

38910

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.4K40

MySQL处理乱码步骤

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

1K20

数据存储内存对齐

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

14930

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

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

《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

70030

缓存雪崩处理办法

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

69621

字符编码详解及由来

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

85820

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

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

60710

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

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

3K30

BCClibbpf转换

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

1.7K00

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

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

49120

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.2K20
领券