关于 汉字内码索引??
在建立汉字字库时,应用下面结构体struct typFNT_GB12// 汉字字模数据结构
{
signed char Index; // 汉字内码索引
unsigned char Msk; // 点阵码数据
};
然后应用下面程序来索引汉字
void LCD_print_string(unsigned char x, unsigned char y, const unsigned char*point, unsigned char BGD_color, unsigned char FONT_color)
{
signed char temp1, temp2, i;
unsigned char *pdata = (unsigned char*)0;
while (*point!= '\0')
//判断是否显示完成
{
//取汉字数据
temp1 = *point++;
if (temp1 &0x80)
//如果是要显示汉字
{
temp2 =*point++;
for (i = 0; i < ZIKU_SIZE; i++)
{
if (temp1 == GB12.Index && temp2 == GB12.Index)
//查索引
{
pdata = (unsigned char*)(&(GB12.Msk)); //找到,字模指针赋值
break;
}
}
if (i == ZIKU_SIZE)
pdata = (unsigned char*)FONT_NULL;
//找到
LCD_Drawhz(x, y, pdata, 1, BGD_color, FONT_color);
x += 12;
LCD_CS_PORT_SET;
}
else if (temp1 == 0x20)
x += 6;
else
//如果要显示字符
{
if (temp1 >= '0' && temp1 <= '9')
{
temp1 &= 0x0F;
LCD_DrawNum(x, y, temp1, 0, 255);
x += 8;
}
else if (temp1 >= 'A' && temp1 <= 'F')
{
temp1 = temp1 - 55;
LCD_DrawNum(x, y, temp1, 0, 255);
x += 8;
}
else
{
LCD_DrawNum(x, y, 0, 0, 255);
}
LCD_CS_PORT_SET;
}
}
}
请问if (temp1 &0x80)
//如果是要显示汉字和 else if (temp1 == 0x20) 这两句是怎么区别是要显示的字符是否为汉字?? 汉字的编码是两个值大于0x80的字节数据。 为什么呢??能说清楚点吗?? 小于0x80的是ASCII码(英文,数字和符号等),汉字机内码都大于这个值 struct typFNT_GB12// 汉字字模数据结构
{
signed char Index; //汉字内码索引
unsigned char Msk; // 点阵码数据
};
请问下: 汉字内码索引中和 点阵码数据中24]怎么算来的? truct typFNT_GB12// 汉字字模数据结构
{
signed char Index; //汉字内码索引
unsigned char Msk; // 点阵码数据
};
signed char Index; //存储汉字内码(两个字节Index和Index)或者ASCII (一个字节Index)
unsigned char Msk; // 点阵码数据 保存的是12*12大小的汉字点阵数据,16的就是32.... http://www.douban.com/note/89981854/
看完你就知道为什么大于127的就一定是汉字了。。。呵呵 汉字内码和AscII码的区分条件原来是这样的,非常感谢 鹅鹅鹅 为什么有些signed char Index; 是3,有些是2呢 路过,学习了
页:
[1]