unicode gbk 转换函数
来源:互联网 发布:数据库添加语句 编辑:程序博客网 时间:2024/04/20 07:37
typedef unsigned shortWCHAR;//字库信息结构体定义//用来保存字库基本信息,地址,大小等__packed typedef struct {u8 fontok;//字库存在标志,0XAA,字库正常;其他,字库不存在u32 ugbkaddr; //unigbk的地址u32 ugbksize;//unigbk的大小 u32 f12addr;//gbk12地址u32 gbk12size;//gbk12的大小 u32 f16addr;//gbk16地址u32 gkb16size;//gbk16的大小 }_font_info; _font_info ftinfo;//字库信息结构体WCHAR ff_convert (/* Converted code, 0 means conversion error */WCHARsrc,/* Character code to be converted */UINTdir/* 0: Unicode to OEMCP, 1: OEMCP to Unicode */){WCHAR t[2];WCHAR c;u32 i, li, hi;u16 n; u32 gbk2uni_offset=0; if (src < 0x80)c = src;//ASCII,直接不用转换.else { if(dir)//GBK 2 UNICODE{gbk2uni_offset=ftinfo.ugbksize/2; }else//UNICODE 2 GBK { gbk2uni_offset=0;}//if(UK_FLAG)//存在 {/* Unicode to OEMCP */hi=ftinfo.ugbksize/2;//对半开.hi =hi / 4 - 1;li = 0;for (n = 16; n; n--){i = li + (hi - li) / 2;SPI_Flash_Read((u8*)&t,ftinfo.ugbkaddr+i*4+gbk2uni_offset,4);//读出8个字节 if (src == t[0]) break;if (src > t[0])li = i; else hi = i; }c = n ? t[1] : 0; }//else c=0;}return c;} //unicode gbk 转换函数//src:输入字符串//dst:输出(uni2gbk时为gbk内码,gbk2uni时,为unicode字符串)//mode:0,unicode到gbk转换;// 1,gbk到unicode转换;void unigbk_exchange(u8 *src,u8 *dst,u8 mode){u16 temp; u8 buf[2];if(mode)//gbk 2 unicode{while(*src!=0){if(*src<0X81)//非汉字{temp=(u16)ff_convert((WCHAR)*src,1);src++;}else //汉字,占2个字节{buf[1]=*src++;buf[0]=*src++; temp=(u16)ff_convert((WCHAR)*(u16*)buf,1); }*dst++=hex2chr((temp>>12)&0X0F);*dst++=hex2chr((temp>>8)&0X0F);*dst++=hex2chr((temp>>4)&0X0F);*dst++=hex2chr(temp&0X0F);}}else//unicode 2 gbk{ while(*src!=0){buf[1] = chr2hex(*src++)*16;buf[1]+= chr2hex(*src++);buf[0] = chr2hex(*src++)*16;buf[0]+= chr2hex(*src++); temp=(u16)ff_convert((WCHAR)*(u16*)buf,0);if(temp<0X80){*dst=temp;dst++;}else {*(u16*)dst=swap16(temp);dst+=2;}} }*dst=0;//添加结束符}
阅读全文
0 0
- unicode gbk 转换函数
- gbk转换unicode编码
- GBK与unicode转换
- UNICODE GBK双向转换码表
- gbk - utf8 转换函数
- php的汉字转换: GBK->Unicode(UTF8)
- php的汉字转换: Unicode(UTF8)->GBK
- delphi 编码转换 unicode gbk big5
- Delphi 编码转换 Unicode gbk big5
- /uFEDC 形式unicode转换成GBK
- GBK Unicode UTF 一点转换方法收集
- char, wchar_t,UTF8,UNICODE,GBK转换
- delphi 编码转换 unicode gbk big5
- FATFS外置UNICODE GBK双向转换码表
- char, wchar_t,UTF8,UNICODE,GBK转换
- UNICODE, GBK, UTF-8编码的转换
- unicode转换成gbk或者中文
- GBK/Unicode
- codeforces830A (二分|DP)
- Java学习笔记 02
- 测试
- 【脚本语言系列】关于Python基础知识__slots__,你需要知道的事
- 数据库事务的四大特性以及事务的隔离级别
- unicode gbk 转换函数
- Node.js中间件和spring boot配合使用
- Firebase-config 在android中的使用
- java.lang.ClassCastException: class com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$
- java集合框架的讲解
- oracle编程基础语法
- Unity3d 局域网小游戏DEMO学习
- 虚幻4流体模拟
- 21 HXBlog_V2.0