用C语言显示汉字的演示程序
汉字是方块字,宽高相等的汉字库在嵌入式领域有着广泛的应用,且其解析也相对来说是比较简单的。
汉字在汉字库中的索引一般会遵循GB2312/GBK编码规则,GB2312/GBK规定汉字编码由2个字节组成,其中低字节区码,高字节为位码。本文以最常见的UCDOS中16x16的宋体字库HZK16来演示汉字的显示方法,HZK16中汉字的存放基于GB2312编码的顺序,每个汉字的点阵数据占32个字节,每个字节表征8个点的状态,每行从左至右的点的状态分别对应字节从高到低的位值。
下面提供完整的演示程序以供参考,
- #include <stdio.h>
 - #define FONT_SIZE (16) /* 字体大小 */
 - /*
 - 获取汉字在汉字库中的索引位置
 - 根据GB2312/GBK编码规则,汉字的低字节hz[0]是区码,高字节hz[1]是位码,汉字库从区位码0xa1a1开始存放汉字
 - */
 - #define HZ_INDEX(hz) ((hz[0] - 0xa1) * 94 + (hz[1] - 0xa1))
 - #define DOTS_BYTES (FONT_SIZE * FONT_SIZE / 8) /* 汉字点阵数据所占的字节数 */
 - int main(int argc, char* argv[])
 - {
 - FILE* hzk;
 - unsigned char song[2] = "\xcb\xce"; /* “宋”字的区位码为0xcbce */
 - unsigned char dots[DOTS_BYTES];
 - unsigned char b;
 - int i, j, k;
 - /* 打开汉字库hzk16,并从中提取“宋”字的点阵数据 */
 - if((hzk = fopen("hzk16", "rb")) == NULL)
 - {
 - return -1;
 - }
 - fseek(hzk, HZ_INDEX(song) * DOTS_BYTES, SEEK_SET);
 - fread(dots, sizeof(unsigned char), DOTS_BYTES, hzk);
 - fclose(hzk);
 - /* 用“*”号根据点阵数据显示“宋”字 */
 - for(i = 0; i < FONT_SIZE; i++)
 - {
 - /* 每行共FONT_SIZE / 8个字节 */
 - for(j = 0; j < FONT_SIZE / 8; j++)
 - {
 - b = dots[i * 2 + j];
 - /* 从左至右的点分别对应字节从高到低的位值 */
 - for(k = 0; k < 8; k++)
 - {
 - if(b & 0x80)
 - printf("%c ", '*');
 - else
 - printf(" ");
 - b <<= 1;
 - }
 - }
 - printf("\n");
 - }
 - return 0;
 - }
 
程序编译运行后会出现如下的显示效果,
- *
 - *
 - * * * * * * * * * * * * * *
 - * *
 - * * *
 - *
 - * *
 - * * * * * * * * * * * * * * *
 - * * *
 - * * *
 - * * * *
 - * * * * *
 - * * *
 - * *
 - *
 - *
 - 挺好的先收藏
 
用C语言显示汉字的演示程序的更多相关文章
- 在wex5平台grid里面的gridselect下拉不能显示汉字问题
		
当grid里面有gridSelect组件的时候,gridSelect里面的bind-ref是对应的数据库存入字段(int类型),bind-labelRef是对应的计算字段(视图里面的),而option ...
 - ASP.NET MVC为字段设置多语言显示 [转]
		
这段时间一直在忙.NET的项目,今天就写一下关于.NET的文章吧,也很长时间没写过.NET的啦 在使用ASP.NET MVC3 的时候,使用元数据模式可以非常方便地设置每个 字段(或者说属性)以减少 ...
 - 设置centos7语言显示环境
		
1.查看可选语言显示包 locale -a ............(省略好多) zh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8zh_HKzh_HK ...
 - 逆向project第004篇:令计算器程序显示汉字(下)
		
一.前言 钩子技术是一项很有有用价值的技术.在Windows下HOOK技术的方法比較多,使用比較灵活,常见的应用层的HOOK方法有Inline HOOK(详见<反病毒攻防研究第012篇:利用In ...
 - 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
		
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
 - 转 Mac 下自带的中文输入法不显示汉字提示问题
		
原文 https://blog.csdn.net/moxi_wang/article/details/50721326 当时聊天的时候不知道那个手指头按错了什么键 导致Mac自带的中文输入法不能提示显 ...
 - 使用Tslib在触摸屏上显示汉字【转】
		
转自:http://www.latelee.org/embedded-linux/use-tslib-to-display-chinese-character.html 终于到了在触摸屏上显示汉字了, ...
 - activiti部署到linux后流程图不显示汉字的问题
		
linux和windows的字体文件一般是不一样的,默认情况下,linux的java7中一般不支持中文,activiti的动态流程图中的汉字需要java调用汉字的字库,这里需要配置一下java的汉字字 ...
 - emwin显示汉字使用vs studio仿真和使用keil编写烧录的不同
		
我用emwin是在新唐的开发板上练习的,所有我就去官网下了开发板的资料,别的开发板应该也有对应的资料,这些软件网上应该很容易搜得到 然后用GUIBuilder构建一个界面,再用FontArchitec ...
 
随机推荐
- 用ansible 完成一次性的工作(ad-Hoc)工作
			
ansible 真正强大的功能是它的playbook,但是在日常的工作中通过会遇到一些工作,它们只是需要我们偶尔操作一下:比较说重启一下 操作系统:像这样的工作就用不着ansible-playbook ...
 - laravel建立一个分组控制器和分组路由
			
路由 Route::group(['domain' => 'laravel.8g.com','namespace' => 'Admin'],function() { Route::get( ...
 - ps钢笔工具 (重要工具)
			
ps钢笔工具 ctrl键 + 鼠标选中操作的点 = 移动点 alt键 + 方点 + 拖拉 = 拖出两个手柄 和 控制两端弧度 alt键 + 圆点 = 控制单向弧度
 - java Webservice(一)HttpClient使用(一)
			
1.拳头之Get/Post拳头是最基本的一重武器,也是最重要的,好比练武之人必须先扎稳马步. java 代码 HttpClient httpclient=new HttpClient();//创建一个 ...
 - 在ModelSim中添加Xilinx仿真库
			
在ModelSim中添加Xilinx仿真库 说明: l ModelSim一定要安装在不带空格的目录下,即不要安装在“Program Files”目录下.如作者是安装在D:\softwares\Mode ...
 - ng-bind和{{}}插值法
			
引言 今天调bug的时候遇到了一个问题,就是有的时候加载出来的数据没有数据的时候出现的是{{TeacherName}},一看这个不是我在页面上绑的值吗?怎么这样就显示出来了呢…… 针对这个问题,想起来 ...
 - 壮哉大微软,.Net人的春天来了,你准备好了嘛!
			
http://www.cnblogs.com/hguchen/p/5621809.html *********************** 一.序言 2016年6月27日的早晨,微软在 Red Hat ...
 - Office 2013 Excel 打开文档很慢很慢的解决方法
			
这个问题查了很多案例,试了很多方法,但是只有下面这个方法有用! 这几天打开excel文档很慢很慢,双击之后好久没反应,过会儿它才慢慢冒出来,当时将就了,刚刚休息的时候想着查一下吧,不然很影响工作效率! ...
 - js 中object对象的操作
			
n = object对象 for(var p in n){ console.log(p);// 取得是key值 console.log(n[p]);//取得是value值 } 继之前js中数组的常用方 ...
 - PowerShell实现基于SharePoint的网站HomePage Auto-Configure Solution
			
Home Page Web Parts Auto-Configuration PS:该项目为公司项目,我还是给他的名字屏蔽掉吧,这是我用PowerShell写的一个自动化升级工具,此为三部自动化工具的 ...