|
发表于 2006-12-25 16:07:55
|
显示全部楼层
GSM规定每封短消息最多140bytes,根据编码方式不同以下情况
1.GSM7Bit编码,不压缩,140个字。
2.GSM7Bit编码,压缩,160个字(140*8bit/7bit)
3.Unicode编码,70个字,这就是中文短消息不能超过70个字的由来。
对于超过160个字的短消息,GSM定义了EMS(增强短消息)的格式用于
发送长的短消息和EMS(一般是小图片和短铃声)。
这样就要重新定义格式,一般是在每个SMS的最前面几个字节定义一下,
这是个EMS,导致160bytes被占用了几个字节。
所以长的短消息的时候,每页的字数就不一样了少于160个字。
具体回到上面的例子,6个字节是用于EMS的标志。
1.输入的时候,一直输入到160bytes没有问题是第一封SMS。
2.继续输入,161的时候,不行了要分成2封,所以第一夜最多160.
3.继续到2*(160-6)的时候,该第三封了,所以第二页最多到2*(160-6)-160=148.
4.同样的计算,后面都是154.
为什么要有6个字节的头,这里面告诉你,总共多少页,现在是第几页,
以保证接受方收到的次序不一样也能拼回原来的内容。,
GSM规定每封短消息最多140bytes,根据编码方式不同以下情况
1.GSM7Bit编码,不压缩,140个字。
2.GSM7Bit编码,压缩,160个字(140*8bit/7bit)
3.Unicode编码,70个字,这就是中文短消息不能超过70个字的由来。
对于超过160个字的短消息,GSM定义了EMS(增强短消息)的格式用于
发送长的短消息和EMS(一般是小图片和短铃声)。
这样就要重新定义格式,一般是在每个SMS的最前面几个字节定义一下,
这是个EMS,导致160bytes被占用了几个字节。
所以长的短消息的时候,每页的字数就不一样了少于160个字。
具体回到上面的例子,6个字节是用于EMS的标志。
1.输入的时候,一直输入到160bytes没有问题是第一封SMS。
2.继续输入,161的时候,不行了要分成2封,所以第一夜最多160.
3.继续到2*(160-6)的时候,该第三封了,所以第二页最多到2*(160-6)-160=148.
4.同样的计算,后面都是154.
为什么要有6个字节的头,这里面告诉你,总共多少页,现在是第几页,
以保证接受方收到的次序不一样也能拼回原来的内容。 |
|