|
这是我从芯片GT21H16S2Y的芯片手册里面看到一段代码,功能是将Unicode内码转化为GB2312内码。
里面有几个定义看不懂,望高手指点下。
首先BYTE、WORD这是什么数据类型?WORD code; 这样定义可以吗?code是关键字?- 6.4 Unicode 到 GB2312内码转换程序
- 功能: 把 Unicode 内码转换为 GB2312 内码
- 参数: srcCode:输入 Unicode 内码串。
- destCode:转换后得到的 GB2312 内码串。
- BYTE * UToGb2312Buff =0x67d70; // UToGb2312Buff为Unicode到GB2312内码转换表在ROM中的起始地址
- BYTE UnicodeToGB2312(BYTE *srcCode,BYTE *destCode)
- {
- BYTE *ptr,result=0;
- int h;
- WORD code;
- code = *srcCode++;
- code = (code<<8) + *srcCode;
-
- if(code<0xa0) result=1;
-
- else if(code<=0xf7) h=code-160;
- else if(code<0x2c7) result=1;
-
- else if(code<=0x2c9) h=code-160-463;
- else if(code<0x2010) result=1;
-
- else if(code<=0x2312) h=code-160-463-7494;
- else if(code<0x2460) result=1;
-
- else if(code<=0x2642) h=code-160-463-7494-333;
- else if(code<0x3000) result=1;
-
- else if(code<=0x3017) h=code-160-463-7494-333-2493;
- else if(code<0x3220) result=1;
-
- else if(code<=0x3229) h=code-160-463-7494-333-2493-520;
- else if(code<0x4e00) result=1;
-
- else if(code<=0x9b54) h=code-160-463-7494-333-2493-520-7126;
- else if(code<0x9c7c) result=1;
-
- else if(code<=0x9ce2) h=code-160-463-7494-333-2493-520-7126-295;
- else if(code<0x9e1f) result=1;
-
- else if(code<=0x9fa0) h=code-160-463-7494-333-2493-520-7126-295-316;
- else if(code<0xe76c) result=1;
-
- else if(code<=0xe774) h=code-160-463-7494-333-2493-520-7126-295-316-18379;
- else if(code<0xff00) result=1;
-
- else if(code<=0xff5f) h=code-160-463-7494-333-2493-520-7126-295-316-18379-6027;
- else if(code<0xffe0) result=1;
-
- else if(code<=0xffe5) h=code-160-463-7494-333-2493-520-7126-295-316-18379-6027-128;
- else result=1;
-
- if(result==0)
- {
- ptr = UToGb2312Buff + (h<<1); GT21H16S2Y标准点阵汉字字库芯片用户手册
- *destCode++ = *ptr++;
- *destCode = *ptr;
- }
- else
- {
- *destCode++ =0xa1;
- *destCode =0xa1;
- }
-
- return 0;
- }
复制代码 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|