博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助 

不为屋

Don't cry because it's over,smile because it happen~~~~
daisypan.cublog.cn
关于作者  
姓名:Daisy
职业:Student
年龄:23
位置:Macau
个性介绍:不要人夸颜色好,只留清气满乾坤---《墨梅》

我的分类  




16-bit Unicode PDU编码

   关于短信的编码方式,网上有很多相关的资料,就我觉得,深圳的蚕蛹先生有一篇叫《C#开发终端式短信的原理和方法》的文章,对这方面的知识和应用介绍得最为详细,让我受益匪浅。但是他的编码方式,主要适用于中国大陆一些地区。下边我将介绍一种适用于澳门且适合中英文的16-bit Unicode PDU编码方式。

    比如我要给我的澳门手机66525472发送内容为“快了,12ab”的一条短消息,它的短信编码为:0011000B915863565274F2000801105FEB4E86FF0C00310032002000610062

下边我来解释一下编码的过程。

001100”中的“00表示自动加入手机的短信中心号码,澳门地区的短信中心号为“+8536800855。“1100是PDU编码的固定格式。

0B”是目标号码的长度,表示为两位的十六进制。我们的目标号码是66525472,加上澳门的区号853,(注意,不计“+”),长度为11,化为二位的十六进制结果就为“0B”。

915863565274F2”中的“91”表示国际号码格式“+”,“5863565274F2”是目标号码奇偶位交换后的结果,注意在交换之前,先确定号码的长度是否偶数,如果不是,最后要添加F,我们的目标号码长度为11,是奇数,我们需要加F。原号码为85366526452F,变换之后就为5863565274F2

000801”中的“00”是固定的,表示GSM普通的点对点的方式,“08”表示为16-bit的编码方式,“01”表示短信暂存在短信服务中心的时间,具体表示多长,我也不记得了,不过时间不算长。

10”是短信息内容经过编码后的长度/2的结果,也是两位的十六进制数。计算该长度之前,我们需要对发送内容进行16-bit Unicode编码,以下是C#的实现方式。

        public string smsPDUEncoded(string Content)

            {

                Encoding encodingUTF = System.Text.Encoding.BigEndianUnicode;

                string s = null;

                byte [] encodedBytes = encodingUTF.GetBytes(Content);

                for (int i =0;i < encodedBytes.Length;i++)

                {

                    s += BitConverter.ToString(encodedBytes,i,1);

                }

                s = String.Format("{0:X2}{1}",s.Length/2 ,s);

               

                return s;

            }

得到s后我们在计算它的长度就很简单了,不过在具体的编程过程,你的长度计算公式可能需要改为(s-2)/2,因为内容中添加了字符串的结束符“\0”。

5FEB4E86FF0C00310032002000610062”是发送内容“快了,12ab”的16-bit编码。

经过上边的分析,大家应该对16-bit PDU编码方式有所了解了吧。有兴趣的话,大家可以进入超级终端玩一下,AT指令集网上很多的。这个短信PDU我也是大三暑假弄的,因为要调一个网络摄像头的监控程序。现在也差不多忘了,所以写得有点乱。下次有时间再系统地整理一下,比如在超级终端测试AT指令以及串口通讯的测试什么的。下次吸取教训,千万别太相信自己的记忆力,干了什么事,不管成功与否,一定要好好整理并做好记录。

 

 

C#开发终端式短信的原理和方法》网址为:

http://www.qqread.com/soft-engineering/p553111102.html

 

 

 

                                                                 

                                                                 

 发表于: 2007-10-31,修改于: 2007-10-31 22:32
 已浏览591次,有评论0条
推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:6.86986

京ICP证041476号