文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发C++Builder手机短信息SMS开发—编码和解码
精品推荐
特别推荐
·菜鸟入门 认识C#中的委托和事件
·WINDOWS下的动态鼠标光标控制
热点TOP10
·计算机短信DIY
·利用C++ Builder开发动画DLL
·C++ Builder下数据库报表Master/Detail关系功能的实现
·用Builder C++设计串行口COM1或COM2的读写操作
·在C++ Builder中进行DirectX编程(2)
·QuickReport基本知识
·C++Builder IDE使用技巧与快捷键
·利用C++Builder遍历文件目录
·ODBC中的同步与异步执行模式
·利用C++ Builder 5.0创建用户自己的网上聊天程序

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

日期:2007年8月16日 作者: 查看:[大字体 中字体 小字体]


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
{

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
{

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))<>(8-Point));

if(Point%7==0&&Point!=0)

Point=0;

else

Point=Point+1;

[1] [2] 下一页 




上一篇:用C++ Builder3 制作记事本

下一篇:用C++ Builder创建数字签名
相关文章:
·手机里舍不得删除的48条搞笑短信(保证你没看过)
·解决与HTTP 500 – 内部服务器错误错误信息有关的问题
·推荐:漂亮的手机上使用的墙纸图片分享下载
·行货手机和水货手机究竟啥区别?
·3GP手机视频转换工具WinAVI
·推荐:精彩漂亮手机屏保手绘MM动画图片
·手机 小灵通解密大全
·Visual Studio 2005集成开发环境图解
·3DS Max工业产品造型设计:手机
·使用Skype免费发送手机短信的方法
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot