搜索
bottom↓
回复: 10

关于 汉字内码索引??

[复制链接]

出0入0汤圆

发表于 2010-6-15 20:44:52 | 显示全部楼层 |阅读模式
在建立汉字字库时,应用下面结构体
struct typFNT_GB12  // 汉字字模数据结构
  {
    signed char Index[3]; // 汉字内码索引
    unsigned char Msk[24]; // 点阵码数据
  };
然后应用下面程序来索引汉字
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[0] && temp2 == GB12.Index[1])
        //查索引
        {
          pdata = (unsigned char*)(&(GB12.Msk[0])); //找到,字模指针赋值
          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) 这两句是怎么区别是要显示的字符是否为汉字??

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-6-16 07:50:28 | 显示全部楼层
汉字的编码是两个值大于0x80的字节数据。

出0入0汤圆

 楼主| 发表于 2010-6-17 10:19:13 | 显示全部楼层
为什么呢??能说清楚点吗??

出0入0汤圆

发表于 2010-6-17 11:36:07 | 显示全部楼层
小于0x80的是ASCII码(英文,数字和符号等),汉字机内码都大于这个值

出0入0汤圆

发表于 2010-12-23 22:40:42 | 显示全部楼层
struct typFNT_GB12  // 汉字字模数据结构
  {
    signed char Index[3]; //  汉字内码索引

    unsigned char Msk[24]; // 点阵码数据
  };

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

出0入0汤圆

发表于 2010-12-24 10:37:19 | 显示全部楼层
truct typFNT_GB12  // 汉字字模数据结构
  {
    signed char Index[2]; //  汉字内码索引

    unsigned char Msk[24]; // 点阵码数据
  };

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

出0入0汤圆

发表于 2010-12-24 16:07:13 | 显示全部楼层
http://www.douban.com/note/89981854/
看完你就知道为什么大于127的就一定是汉字了。。。呵呵

出0入0汤圆

发表于 2011-7-2 14:13:13 | 显示全部楼层
汉字内码和AscII码的区分条件原来是这样的,非常感谢

出0入0汤圆

发表于 2011-8-26 19:28:37 | 显示全部楼层
鹅鹅鹅

出0入0汤圆

发表于 2011-12-25 22:12:24 | 显示全部楼层
为什么有些signed char Index[3]; 是3,有些是2呢

出0入0汤圆

发表于 2014-9-24 10:12:37 | 显示全部楼层
路过,学习了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 17:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表