SMS编码之PDU – 接收短信篇

上一篇文章简单介绍了下收发短信需要用到的AT指令,这篇文章详细分析SMS编码中的PDU编码。

首先我用测试手机向短信猫中的sim卡发送了两条短信,内容分别为:

Hello World

Hello World!

注意第二条中的感叹号是!(/xFF01)而非!(/x21)

用AT+CMGL=4收到的字符串如下:

我们惊奇的发现第一条的PDU长度是30,而第二条却是44,可见其中必有文章。

首先来分析下前面一长串一样的数字:

SCA: 0891683108501705F0
PDUType: 04
OA: 0D91683137851920F0
PID: 00
DCS: 00 / 08
SCTS: 01508141304423 / 01508141408423
UDL: 0B / 18
UD: C8329BFD065DDF723619 / 00480065006C006C006F00200057006F0072006C0064FF01

一、SCA(Service Center Address)短消息服务中心地址

SCA长度为1 – 12字节,由三个部分组成:

08:SCA长度,指(91) + (683108501705F0)的总长度为8 * 2。
91:SCA类型,81表示国内号码,91表示国际号码,需在号码前加"+",最为常用。

683108501705F0: SCA地址,这里是用两两颠倒的顺序存储的,正确的号码是8613800571500F,最后的F是为了补足偶位数号码用的。

注意CMGF中的<length>是不包括SCA长度的。
二、PDUType
0x04 = 0b0000 0100
bit 7: RP(Reply Path)
0 - 未设置
1 - 设置
bit 6: UDHI(User Data Header Indicator)用户数据头标识
0 – 用户数据(UD)部分不包含头信息
1 – 用户数据(UD)开始部分包含用户头信息
bit 5: SRI(Status Report Indication)状态报告指示,此值仅被短消息服务中心(SMSC)设置

0 – 状态报告将不会返回给短消息实体(SME)

1 – 状态报告将返回给短消息实体(SME)

bit 4、3: Unknow

bit 2: MM(More Messages to Send)有更多的信息需要发送,此值仅被 SMSC 设置

0 – 在 SMSC 中有更多的信息等待 MS

1 – 在 SMSC 中没有更多的信息等待 MS

bit 1、0: MTI(Message Type Indicator)信息类型指示

三、OA(Originator Adress)发送方SME的地址

0D:OA长度,这里的含义与SCA长度不一样,是(8613735891020)的长度。
91:OA类型,同SCA类型。
683108501705F0: OA地址,同SCA地址。
四、PID(Protocol-Identifier)协议标识
一般设为00
五、DCS(Data Coding Scheme)用户数据(UD)编码方式
根据bit3、2来判断:
00为默认的7bit编码,此时最大可传送160字节
01为8bit编码,一般用于彩信,可发送140字节
10为UCS2编码()16bit,此时最大可发送70字节。
这里就说明了为什么相差一个感叹号但PDU长度却相差那么多的原因了。

当你编辑短信时,只输入ASCII码,发送时会使用7bit编码。一旦加入了大于0xFF的字符时,便会自动转为UCS2编码。

有些手机上会显示剩余可编辑的字符,有时会从100多一下子减少到几十,就是这个原因。

六、SCTS(Service Center TimeStamp)服务中心时间戳
01508141304423 / 01508141408423
编码方式类似SCA地址,也是两两颠倒的顺序。
10 05 18 14 03 44 32 / 10 05 18 14 04 48 32
依次是年、月、日、时、分、秒、时区
七、UDL(User Data Length)用户数据长度

对于7bit编码,UDL是指编码前的数据长度,而不是编码后的长度,故有可能比UDL段的长度要大。

对于UCS2编码,可以简单的认为UDL为UD长度乘以2。
八、UD(User Data)用户数据
8bit编码没有接触到过。
UCS2编码就是转为Unicode。

7bit编码是舍弃了ASCII编码中无用的第8位(ASCII码值小于0×80),将下一个7bit逐次移到前面的一种编码方式。具体可以参考这个链接:

http://borland.mblogger.cn/shuixin13/posts/10087.aspx
原创文章,转载请注明出处:Cherubine
本文固定链接:http://www.wangth.com/?p=146

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值