手机短信息SMS开发—编码,解码

豆豆网   技术应用频道   2006年03月31日  【字号: 收藏本文

本文详细介绍手机短信息SMS开发—编码,解码

  1、 英文编码

  缺省的GSM字符集为7位编码,ASCII码为8位编码,编码就是将8位ASCII编码转换为7位编码。

  例如:1234 编码后得到31D98C06

  2进制表示

  8位编码 00110001 00110010 00110011 00110100

  7位编码 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;
}

  2、 英文解码

  简单地说就是将7位字符编码转换为8为字符编码

  以下是C++Builder的实现代码:

责编:豆豆技术应用

正在加载评论...