当手机设置为PDU编码模式,则单条英文短信采用7bit编码。而长短信编码需要在短信内容前面加上编码长度,050003的协议头,长短信标识码,以及总条数和当前条数。由于这些编码占据一些字节,使得短信内容7bit编码的起始位不为7的倍数。因此长短信拆分的每条内容的第一个字节,需要左移一位放在编码后的第一个字节。后面的内容则按照普通7bit进行编码。
我们都知道7bit编码是把8字节的内容压缩成7个字节,而长短信拆分纯英文内容的规则是最多153个字符(字节)/条。第一个字符仅仅左移,后面152个字符参加7bit编码。(152刚好是8的倍数)。当然长短信拆分的最后一条子短信,有可能不足152个字符,这并没有关系。
最后长短信编码的长度为所有字符个数+7。
具体如下:
这条长短信内容为161个“a”
第一条子短信编码(153个a)
A0(153+7) 050003 06 0201 C2 E170381C0E87C3.......................
编码长度 长短信协议头 长短信标识码 1/2 左移第一个字母a 7bit编码内容,以上内容重复19次
第二条子短信编码(8个a)
0F(8+7) 050003 06 0202 C2 E170381C0E8701
编码长度 长短信协议头 长短信标识码 2/2 左移第一个字母a 7bit编码内容