野火STM32学习 GB2312 字符的字模偏移量计算

博客围绕STM32中GB2312字模偏移量计算展开。指出视频中关于字符字模首字节偏移量计算的一些说法有误,解释了偏移量计算应以首字符空格为基准,还说明用区位码计算偏移量也可行,只要能找到字符对应的字模。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【提高篇】29-LCD—液晶显示中英文(第4节)-如何制作字模_哔哩哔哩_bilibili

水哥讲到0xA0-1的时候说,这个1是和数组有关,其实跟数组根本没关系,这个ADDR是为了算出该字符的字模首字节相对于GB2312第一个字符(也就是空格)的首字节偏移量,空格的编码就是A1A1。

GB2312字模文件(或者数组)里,首字符就是空格,所有其他字符为了在文件(或者数组)中找到自己所对应的那块字模数据(本例子中,采用的是16×16点阵的字模,也就是16×16个位,32字节),要根据自己的GB2312编号和首字符相比,然后求出偏移量,这个偏移量如果按字节算,就是上述视频PPT中的公式:

这个公式其实把0xA0写成0xA1反而更好理解,总之以首字符(空格)为基准就对了。

实在觉得难以理解的话,那把空格自己代进去验证,这个公式能成立,就算可行。

空格的区位码转换成16进制编码为0xA1A1,也就是Code_{H}为0xA1, Code_{L}也是0xA1,代进去为0,这就对了,因为自己对自己是没有偏移量的啊。

另外,后面老师讲到这个公式为什么要用GB2312编码计算,而不是区位码,那个地方解释错了,画蛇添足了,不用这个GB2312编码计算用区位码也是可以的,GB2312编码只不过是在区位码基础上加上了A0A0(区码加A0,位码也加A0)而已,只要能求出偏移量,能找到字符所对应的字模就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值