关于汉字的编码这里不介绍,网上一大堆,这里只说如何根据输入的汉字对应检索到其点阵。笔者采用的是GB2312标准的16*16点阵字库,支持有汉字6763个,每个汉字占两个字节,对应点阵数据占32字节,因此,字库共占216576字节。每个汉字都唯一对应一个位置,首先获取汉字,获取其内码,然后减去字库第一个汉字(GB2312以"啊"开始,对应的内码为:高位0xb0,低位0xa1)的内码即可检索到偏移量,检索该偏移量处,类似于地址,获取32字节即为该汉字对应的点阵数据。代码实现如下:
//函数名:GetGBKCode
//函数描述:取GBK内码数据
//输入:*c输入的GBK内码
//输出:* pBuffer存放数据的指针
//无返回值
void GetGBKCode(unsigned char* pBuffer,unsigned char * c)
{
unsigned char High8bit,Low8bit;
High8bit=*c; /* 取高8位数据*/
Low8bit=*(c+1); /* 取低8位数据*/
W25X_Read_Bytes(((High8bit-0xb0)*94+Low8bit-0xa1)*32,pBuffer,32);
}