前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GB2312编码_gb2312是简体中文的编码格式

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

作者头像
全栈程序员站长
发布2022-09-20 10:08:40
1.3K0
发布2022-09-20 10:08:40
举报
文章被收录于专栏:全栈程序员必看
GB2312编码_gb2312是简体中文的编码格式
GB2312编码_gb2312是简体中文的编码格式

在区码和位码的基础上,分别加上0XA0的偏移,便是GB2312编码;

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

我们制作ASCII字库时,一般只做可以显示出来的字符字模,前面命令型的ASCII字符,我们不做字模,即从“空格开始”,ASCII表对应0x20,所以当我们使用PCtoLcd的16X16选项制作字库时,(注意英文的实际占用的是8X16,要比汉字小半个字宽),所以,如果根据标准ASCII表制作字库时,可以根据字符的汉字相对于“空格”的偏移找到对应字库中的偏移地址,找到对应的字模;如找到”A”对应的字模:Address = (“A” – ” “) X (8 X 16 )/8,从这个偏移地址向后连续取16个字节,即是”A”的所有字模 。

GB2312是在区位码的地址基础上分别偏移0xA0,每个区有94个汉字;每个汉字占用的字节为(16X16)/8=32个字节;汉字字库的第一个字符也是“空格”,但这个是全角的和ASCII的不一样;如我们再写液晶驱动程序显示一个英文字母时,void (uchar x,uchar y,uchar en) 可以这样寻找偏移=’en’-‘ ‘ 。

该空格的区位码是“0101”,所以任意一个汉字的偏移地址公式是,Address= ( (CodeH-0x30-1)*94+(CodeL-0x30-1) )*( 16*16 )/8;CodeH是GB2312的第一个字节,CodeL是GB2312的第二个字节,减一 是因为区位码是从第一区开始的,而字模数组表是从0开始的; (以上的计算均是按16*16取模时计算的)

当我使用单片机编程工具写程序时,编译的时候,编译器会根据我们的选择(如MDK)会自动将字符串转换成机内码即GB2312形式进行存储,所以我们可以根据GB2312与区位码的关系进行寻找地址偏移。如我们在液晶驱动程序中写一个中文汉字显示程序,void(uchar x,uchar y,uint16 hz ) 可以这样找区位码,CodeH=hz>>8; CodeL=hz&0x00ff;

注意英文和汉字的参数定义类型一个是8位uchar 型的,一个是u16位int16型的,因为GB2312在系统中是占用2个字节的,英文只占用一个字节

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168131.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档