我正在编写一种算法,用于将大型 SMS 消息(>140 字节)拆分为更小的部分(140 字节),以便能够通过 SMPP 协议将它们发送给移动运营商。
每个部分都有一个由 6 或 7 个字节组成的 UDH(用户数据头)。我用于此的文档是:
http://en.wikipedia.org/wiki/Concatenated_SMS
http://mobiletidings.com/2009/02/18/combining-sms-messages/
所以消息部分的结构将是:
[UDH][PART_BODY] 其中
[UDH] - 6 或 7 个字节
[PART_BODY] - 133 或 134 字节
此外,上述每个来源都提到,如果使用 GSM7 编码,则应在部件主体的开头添加填充位,以确保部件主体将从 septet 边界开始。
这就是我开始感到困惑的地方......虽然我了解 septets 如何存储在一个字节中以及填充的含义,但我不明白如何在我的实际代码中实现这一点,如下所示:
public void AddUDHToSmSend(ref SMSend Sm, byte[] Udh)
{
byte[] msg = new byte[Udh.Length + Sm.Message.Length];
Udh.CopyTo(msg, 0);
Sm.Message.CopyTo(msg, Udh.Length);
Sm.Message = msg;
}
Udh - 一个字节数组
Sm.Message - 表示零件主体的字节数组
在这种情况下如何添加填充位?
谢谢!