leesy 发表于 2010-6-15 20:44:52

关于 汉字内码索引??

在建立汉字字库时,应用下面结构体
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) 这两句是怎么区别是要显示的字符是否为汉字??

Vincent007 发表于 2010-6-16 07:50:28

汉字的编码是两个值大于0x80的字节数据。

leesy 发表于 2010-6-17 10:19:13

为什么呢??能说清楚点吗??

gentlerain 发表于 2010-6-17 11:36:07

小于0x80的是ASCII码(英文,数字和符号等),汉字机内码都大于这个值

xdpzxh 发表于 2010-12-23 22:40:42

struct typFNT_GB12// 汉字字模数据结构
{
    signed char Index; //汉字内码索引

    unsigned char Msk; // 点阵码数据
};

请问下: 汉字内码索引中和 点阵码数据中24]怎么算来的?

myqiang1990 发表于 2010-12-24 10:37:19

truct typFNT_GB12// 汉字字模数据结构
{
    signed char Index; //汉字内码索引

    unsigned char Msk; // 点阵码数据
};

signed char Index; //存储汉字内码(两个字节Index和Index)或者ASCII (一个字节Index)
unsigned char Msk; // 点阵码数据 保存的是12*12大小的汉字点阵数据,16的就是32....

myqiang1990 发表于 2010-12-24 16:07:13

http://www.douban.com/note/89981854/
看完你就知道为什么大于127的就一定是汉字了。。。呵呵

mamin506 发表于 2011-7-2 14:13:13

汉字内码和AscII码的区分条件原来是这样的,非常感谢

yunduanmanbu06 发表于 2011-8-26 19:28:37

鹅鹅鹅

baoqi 发表于 2011-12-25 22:12:24

为什么有些signed char Index; 是3,有些是2呢

byixue 发表于 2014-9-24 10:12:37

路过,学习了
页: [1]
查看完整版本: 关于 汉字内码索引??