下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ASCII : 8bits的英文编码,实际使用低7位,127个字符。32 (0x20)为空格,之前是控制字符,之后是有效字符。Uni code :使用两字节对全球字符进行统一编码,有65536个编码,UCS-2为两字节版本(2X6=65536)。Unicode little endian :将 Unicode 中表示同一字符的两个字节顺序反过来,为了适应 CPU 处 理字符的方式,加快处理速度。如:把字符”0xFEFF ”存为FFEF的格式。Unicode big endian : Unicode 字符编码以正序存储。一、之间的关系:UCS2 码是用两个字节表示一个字符,如果字符是 ASCII
2、 码中的字符,则一个字节为空(值 为0),另一个字节为原 ASCII码中的值。如:ASCII中的a,用UCS2表示为0a或a0。所 以UCS2字符中的两个字节有个字节顺序问题,0a为大端,a0为小端。因此,在把 UCS2字符转换成其它字符时,要先清楚字节顺序。二、MTK 中的类型定义:U8 UINT8 , unsigned charU16 UINT16 , unsigned shortU32 UINT32 , unsigned longS8 SINT8, charS16 SINT16, shortS32 SINT32, long三、ASCII 与 UCS2 转换:在 MTK 中有专门的转换函数
3、如: mmi_asc_to_ucs2(S8* pOutbuffer, S8* pInputbuffer);假设现有一 ASCII 数组: char asc_str20;如果转为 U8 则需声明 UCS2 的数组大小为 ASCII 数组大小的两倍, U8 ucs_u8_str40;如果转为 U16 则声明的 UCS2 数组大小可以和 ASCII 数组大小一样, U16 ucs_u16_str20;因为 UCS2 是用两个字节表示 ASCII 中的一个字节的,所以如果声明为 U8 ucs_u8_str20; 的话,会使的转换结果溢出。 (因为大家都是 char 类型嘛),而声明为 U16 的话就不
4、需要使 其大小为 ASCII 码数组大小的两倍了, 只需要一样大小就可以了, 因为 U16 是 unsigned short 类型,长度正好是 char 的两倍,所以正好用 2个字节表示 ASCII 中的一个字节。在 MTK 中能够用 void gui_print_text(U16* text); 函数输出的都是 Unicode 。四、UNICODE 和 ASCII 的存储:存成 ASCII 形式 :如:char num 10 = 0;num0 = 1;num1 = 2;num2 = 3;( 或者:strcat(char *) num, 1);strcat(char *) num, 2);st
5、rcat(char *) num, 3); 也可以 )在内存中 num = 0x31, 0x32, 0x33, 0x00 , ;如果是用 UNICODE 形式存的话:char num 10 = 0;UCS2Strcat(char *)num, L1);UCS2Strcat(char *)num, L2);UCS2Strcat(char *)num, L3);( 但此处不能用 num0 = L1;num1 = L2;num2 = L3; 因为以 UNICODE 形式存的话, 系统就会强行把 0x31,0x00 放到一个 char 元素 里面,结果会出错。所以只能用UCS2Strcat ()函数,
6、否则的话就要把num声明为U16类型的也可以直接赋值。 )在内存中 num = 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x00, 0x00 ,;UNICODE每个字符占两个字节。ASCII占一个。如:字符A 在内存中的表现:unicode 定义: wchar_t ch = A; 内存存放两个字节 0x41, 0x00 ;/ 小端存储格式,即高字节在 高字位,如果存为 0x00, 0x41 时,那存储格式为大端,即高字节在低字位ascii 定义: char ch =A; 内存存放一个字节 0x41五、UNICODE 和 ASCII 的处理:char num_te
7、xt = 0x56, 0x00, 0xF7, 0x53, 0x1A, 0xFF, 0x00, 0x00;/text 号在 MTK 中 ASCII 和 UCS2 分别有不同的处理函数,所以两者处理起来也不同:char* strcat (char*, const char*); strcpy(char *, const char *) 等用于处理 ASCII 类型的字符。S8 *UCS2Strcpy(S8 *strDestination, const S8 *strSource) ;S8 *UCS2Strcat(S8 *strDestination, con st S8 *strSource);等
8、用于处理 UNICODE类型的字符。两者区别在于,用于处理 ASCII 的函数在处理字符串的时候是单个字符逐个处理的,也就 是碰到0x00就立即结束了。如:在处理text号”字符串的时候,由于text号”字符串的 第二个元素是0x0 0,所以就会在此结束。而处理 UNICODE 的函数在处理字符串的时候是两个字符一起处理的,也就是把“text 号”字符串中的第一个和第二个元素看做一个字符, 一起处理, 也就是直到碰到连续的两个 0x00 才会结束。六、UNICODE 保存:MTK 中 U8 和 U16 的保存是有区别的。一般 U8 用的是小端的格式, U16 用的是大端的。 如:Const U8 ucs2_u8_str = 0x41, 0x00, 0x46, 0x00, 0x00, 0x00;/AFConst
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年甘肃省张掖市临泽二中学、三中学、四中学初三下学期第二次月考数学试题理试题含解析
- 山西临汾霍州第一期第二次月考2026届初三第九次适应性考试数学试题含解析
- 2026年武汉市中考预测卷(全国Ⅲ卷)数学试题试卷含解析
- 农业转基因生物安全管理培训
- 2026年大学大一(计算机科学与技术)计算机组成原理阶段测试试题及答案
- 职业规划内测邀请函
- 护理文书的系统性思考
- 2025年前台防疫专项卷
- 护理说课课件制作技巧分享
- 护理学导正:法律法规与政策
- 《留置导尿护理指南》课件
- 厨房油锅起火培训
- 陕旅版三年级英语下册教学计划
- 绿色施工实施策划方案
- 经气管插管吸痰法评分标准
- 电气电机调试前检查及试运行记录表格模板
- 短视频电商数据分析应用
- 《电力数据通信网络工程设计规程》
- 科技项目申报与监理服务作业指导书
- 心脑血管疾病预防课件
- 化学工业建设项目试车规范
评论
0/150
提交评论