操作系统与网络实现 之九
来源:互联网 发布:linux http server 编辑:程序博客网 时间:2024/05/29 13:46
点阵字库
字母Y
对应bit值
字母A
对应bit值
00000000
00000000
00000000
00000000
M
M
M
M
01100110
M
00010000
M
M
M
M
01100110
M
M
M
00111000
M
M
M
M
01100110
M
M
M
M
01101100
M
M
M
M
01100110
M
M
M
M
11000110
M
M
M
M
00111100
M
M
M
M
11000110
M
M
00011000
M
M
M
M
M
M
M
11111110
M
M
00011000
M
M
M
M
11000110
M
M
00011000
M
M
M
M
11000110
M
M
00011000
M
M
M
M
11000110
M
M
M
M
00111100
M
M
M
M
11000110
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
对于字母显示原理如下:
按8*16阵列排列,每一行为一个字节,当读入的位为1时,显示一个点,16个字节全部读入,显示完整的字母
字母Y在asc16字库文件中的信息就是由16个字节表示:00 00 66 66 66 66 3C 18 18 18 18 3C 00 00 00 00
字母A在asc16字库文件中的信息就是由16个字节表示:00 00 10 38 6C C6 C6 FE C6 C6 C6 C6 00 00 00 00
中文显示是同样的道理。只不过中文按16*16阵列排列,每一行为两个字节
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
汉字“小”在hzk16f存储信息由32个字节表示:
01 00 01 00 01 00 01 00 01 00 01 00 09 20 19 10 21 08 41 0C 81 04 01 00 01 00 01 00 05 00 02 00
显示一个完整的汉字“小”
一个汉字占2字节我们将高字节称为ch,低字节称为cl。
ch最高位为一,代表汉字,也就是ch&0x80为真,判断为汉字。汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1
对于GB2312字库,解码的方式如下:
ch=*code;
cl=*(++code);
cl -= 0xa1;
ch -= 0xa1;
offset = ((unsigned long)94*ch + cl)*(size * 2);
例如“小”字,机器码是 D0 A1
ch=0xD0 cl=0xA1
int q = ch - 0xa0 =0x30=48
int w = cl - 0xa0=1
( 94 * ( q - 1 ) + ( w - 1 ) ) =0x1142=4418
也就是“小”字在字库中顺序是在第4418位,在16X16点阵字库中,一个汉字占32字节,所以“小”字的具体偏移量就是4418X32
对于英文来说,它的机器码就是它在字库中的顺序,再乘以16就可以得到英文字母在字库中的具体偏移量。
- 操作系统与网络实现 之九
- 操作系统与网络实现 之四
- 操作系统与网络实现 之五
- 操作系统与网络实现 之二
- 操作系统与网络实现 之六
- 操作系统与网络实现 之三
- 操作系统与网络实现 之七
- 操作系统与网络实现 之八
- 操作系统与网络实现 之十
- 操作系统与网络实现 之十一
- 操作系统与网络实现 之十二
- 操作系统与网络实现 之十三
- 操作系统与网络实现 之十四
- 操作系统与网络实现 之十五
- 操作系统与网络实现 之十六
- 操作系统与网络实现 之十七
- 操作系统与网络实现 之十八(甲)
- 操作系统与网络实现 之十八(乙)
- 把钱投资自己的头脑上(二)
- c 语言中的!和~
- Python 定时执行线程 执行任务
- 黑马程序员_IO流BufferWriter、BufferReader
- 大数据架构和模式(三)理解大数据解决方案的架构层
- 操作系统与网络实现 之九
- 小马哥----高仿小米4 tc01刷机拆机主板图与开机界面图 分联通版与移动版
- 黑马程序员——C语言基础01—C语言概述
- [leetcode-303]Range Sum Query - Immutable
- 【HDU】2966 In case of failure【KD树】
- 一些小方法的集合
- poj1860 Bellman-Ford
- ZigBee相关资源
- 深圳地铁规划图2