谁能总结出来.我就给他一百分.

解决方案 »

  1.   

    你可以去http://www.51wireless.net看一下。
      

  2.   

    手机短信息SMS开发—编码,解码1、  英文编码缺省的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;
    }2、  英文解码简单地说就是将7位字符编码转换为8为字符编码以下是C++Builder的实现代码:
    int ReturnHex(int Value)
    {
           switch (Value)
           {
              case 0:
                    Value=0x7f;
                    break;
              case 1:
                   Value=0x3f;
                    break;
              case 2:
                    Value=0x1f;
                    break;
              case 3:
                    Value=0x0f;
                    break;
              case 4:
                    Value=0x07;
                    break;
              case 5:
                   Value=0x03;
                    break;
              case 6:
                    Value=0x01;
                    break;
              case 7:
                    Value=0x00;
                   break;
            }
            return Value;
    }String __stdcall DecodeEnglish (String InputStr)
    {
            unsigned char InStr[300];
            char OutStr[300];
            String str;
            int j=0,i=0;
            int Point=0;
            int temp;
            memset(InStr,0,301);
            memset(OutStr,0,301);
            for(int i=0;i<InputStr.Length();i=i+2)
            {
                    str="0x"+InputStr.SubString(i+1,2);
                    InStr[i/2]=StrToInt(str);
            }
            while(j<=InputStr.Length()/2)
            {
                    if(Point==0)
                        OutStr[i]=InStr[j]&ReturnHex(Point);
                    else
    OutStr[i]=((InStr[j]&ReturnHex(Point))<<Point)|(InStr[j-1]>>(8-Point));
                    if(Point%7==0&&Point!=0)
                            Point=0;
                    else
                       Point=Point+1;
                   i++;
                    j=i-(i/8);
           }
            OutStr[12]=((InStr[12]&0x07)<<5)|(InStr[11]>>(8-5));
            return AnsiString(OutStr);
    }
    3、  中文编码中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可
    以下是C++Builder的实现代码
    String  EncodeChinese(String InputStr)
    {
    int cur;
    String tempstr,returnstr;
    WideString ws;
    wchar_t  mid[2];
    ws=WideString(InputStr);
    for(int i=1;i<=ws.Length();i++)
    {
    wcscpy(mid,ws.SubString(i,1).c_bstr());
    cur=mid[0];
    FmtStr(tempstr,"%4.4X",ARRAYOFCONST((cur)));
    returnstr=returnstr+tempstr;
    }
    return returnstr;
    }4、  中文解码
    将代码页为CP936的Unicode编码转换为GB2312的中文编码即可以下是C++Builder的实现代码
    String  DecodeChinese(String InputStr)
    {
            wchar_t Buf[300];
            for(int i=0;i<InputStr.Length();i=i+4)
            {
               Buf[i/4]=StrToInt("0x"+InputStr.SubString(i+1,4));
            }
            Buf[InputStr.Length()/4]=0;
            return WideCharToString(Buf);
    }
      

  3.   

    .===============================================================
         ◆◆◆ CSDN查询助手,查询方便快捷 ◆◆◆ 下载地址:  
     http://CoolSlob.ifood1.com/Download/CSDNFinder.exe  
     http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]