首页 / 软件开发 / C++ / 手机短信息SMS开发—编码、解码
手机短信息SMS开发—编码、解码2010-05-191、英文编码缺省的GSM字符集为7位编码,ASCII码为8位编码,编码就是将8位ASCII编码转换为7位编码。例如:1234 编码后得到31D98C062进制表示8位编码 00110001 00110010 00110011 001101007位编码 00110001 11011001 10001100 00000110通过例子可以看出,将ascii8位编码的Bit8去掉,依次将下7位编码的后几位逐次移到前面,形成新的8位编码。以下是C++Builder的实现代码:String __stdcall EncodeEnglish(String InputStr)
{
int n,len,cur;
String tempstr,returnstr;
unsigned char mid1[2],mid2[2];
len=InputStr.Length();
n=0;
for(int i=1;i<=len;i++)
{
if (i<len)
{
strcpy(mid1,InputStr.SubString(i,1).c_str());
strcpy(mid2,InputStr.SubString(i+1,1).c_str());
cur=(mid1[0]>>n)|((mid2[0]<<(7-n))& 0xff);
}
else
{
strcpy(mid1,InputStr.SubString(i,1).c_str());
cur=(mid1[0]>>n)& 0x7f;
}
FmtStr(tempstr,"%2.2X",ARRAYOFCONST((cur)));
returnstr=returnstr+tempstr;
n=(n+1)%7;
if (n==0)
i++;
}
return returnstr;
}