欢迎来到天天文库
浏览记录
ID:15542501
大小:39.50 KB
页数:4页
时间:2018-08-03
《手机短信息sms开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、手机短信息SMS开发—编码,解码1、 英文编码缺省的GSM字符集为7位编码,ASCII码为8位编码,编码就是将8位ASCII编码转换为7位编码。例如:1234编码后得到31D98C062进制表示8位编码001100010011001000110011001101007位编码00110001110110011000110000000110通过例子可以看出,将ascii8位编码的Bit8去掉,依次将下7位编码的后几位逐次移到前面,形成新的8位编码。以下是C++Builder的实现代码:String__stdcallEncodeEnglish(StringInputStr){intn,len
2、,cur;Stringtempstr,returnstr;unsignedcharmid1[2],mid2[2];len=InputStr.Length();n=0;for(inti=1;i<=len;i++){if(i>n)
3、((mid2[0]<<(7-n))&0xff);}else{strcpy(mid1,InputStr.SubString(i,1).c_str
4、());cur=(mid1[0]>>n)&0x7f;}FmtStr(tempstr,"%2.2X",ARRAYOFCONST((cur)));returnstr=returnstr+tempstr;n=(n+1)%7;if(n==0)i++;}returnreturnstr;}2、 英文解码简单地说就是将7位字符编码转换为8为字符编码以下是C++Builder的实现代码:intReturnHex(intValue){switch(Value){case0:Value=0x7f;break;case1:Value=0x3f;break;case2:Value=0x1f;break;cas
5、e3:Value=0x0f;break;case4:Value=0x07;break;case5:Value=0x03;break;case6:Value=0x01;break;case7:Value=0x00;break;}returnValue;}String__stdcallDecodeEnglish(StringInputStr){unsignedcharInStr[300];charOutStr[300];Stringstr;intj=0,i=0;intPoint=0;inttemp;memset(InStr,0,301);memset(OutStr,0,301);for(i
6、nti=0;i7、(InStr[j-1]>>(8-Point));if(Point%7==0&&Point!=0)Point=0;elsePoint=Point+18、;i++;j=i-(i/8); }OutStr[12]=((InStr[12]&0x07)<<5)9、(InStr[11]>>(8-5));returnAnsiString(OutStr);}3、 中文编码中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可以下是C++Builder的实现代码StringEncodeChinese(StringInputStr){intcur;Stringtempstr,returnstr;WideStringws;wchar_tmid[2];ws=WideString(InputStr);for(inti=1;10、i<=ws.Length();i++){wcscpy(mid,ws.SubString(i,1).c_bstr());cur=mid[0];FmtStr(tempstr,"%4.4X",ARRAYOFCONST((cur)));returnstr=returnstr+tempstr;}returnreturnstr;}4、 中文解码将代码页为CP936的Unicode编码转换为GB2312的中文编码即可 以下是C++Builder的实现代码St
7、(InStr[j-1]>>(8-Point));if(Point%7==0&&Point!=0)Point=0;elsePoint=Point+1
8、;i++;j=i-(i/8); }OutStr[12]=((InStr[12]&0x07)<<5)
9、(InStr[11]>>(8-5));returnAnsiString(OutStr);}3、 中文编码中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可以下是C++Builder的实现代码StringEncodeChinese(StringInputStr){intcur;Stringtempstr,returnstr;WideStringws;wchar_tmid[2];ws=WideString(InputStr);for(inti=1;
10、i<=ws.Length();i++){wcscpy(mid,ws.SubString(i,1).c_bstr());cur=mid[0];FmtStr(tempstr,"%4.4X",ARRAYOFCONST((cur)));returnstr=returnstr+tempstr;}returnreturnstr;}4、 中文解码将代码页为CP936的Unicode编码转换为GB2312的中文编码即可 以下是C++Builder的实现代码St
此文档下载收益归作者所有