/// <summary> /// UDHI 长短信拆分 /// </summary> /// <param name="message">短信</param> /// <param name="content">内容</param> /// <param name="no">第N条</param> /// <param name="count">共M条</param> /// <param name="udhiId">本条消息唯一标识</param> /// <param name="limit">字数限制(默认140)</param> /// <param name="headLength">udhi头长度(默认为6)</param> protected virtual void Udhi(ISubmitMessage message, byte[] content, int no, int count, byte udhiId, int limit = 140, int headLength = 6) { if (count == 1) { message.MsgContent = content; } else // 长短信 { var index = no * limit - headLength; var length = Math.Min(limit - headLength, content.Length - index); message.TpUdhi = 1; message.MsgContent = new byte[length + headLength]; message.MsgContent[0] = 0x05; message.MsgContent[2] = 0x03; message.MsgContent[3] = udhiId; message.MsgContent[4] = (byte)count; message.MsgContent[5] = (byte)(no + 1); if (no == 0) { Array.Copy(content, 0, message.MsgContent, 6, length); } else { Array.Copy(content, index, message.MsgContent, 6, length); } } message.MsgLength = (uint)message.MsgContent.Length; }
/// <summary> /// UDHI 长短信拆分 /// </summary> /// <param name="message">短信</param> /// <param name="content">内容</param> /// <param name="no">第N条</param> /// <param name="count">共M条</param> /// <param name="udhiId">本条消息唯一标识</param> /// <param name="limit">字数限制(默认140)</param> /// <param name="headLength">udhi头长度(默认为6)</param> protected virtual void Udhi(ISubmitMessage message, byte[] content, int no, int count, byte[] udhiId, int limit = 140, int headLength = 6) { if (count == 1) { message.MsgContent = content; } else // 长短信 { var index = no * (limit - headLength); var length = Math.Min(limit - headLength, content.Length - index); message.TpUdhi = 1; message.MsgContent = new byte[length + headLength]; // 6位协议头格式:05 00 03 XX MM NN //message.MsgContent[0] = 0x05; //message.MsgContent[2] = 0x03; //message.MsgContent[3] = udhiId; //message.MsgContent[4] = (byte)count; //message.MsgContent[5] = (byte)(no + 1); //使用 7 位的协议头格式:06 08 04 XX XX MM NN message.MsgContent[0] = 0x06; message.MsgContent[1] = 0x08; message.MsgContent[2] = 0x04; message.MsgContent[3] = udhiId[0]; //C# 字节存储是小端顺序 message.MsgContent[4] = udhiId[1]; message.MsgContent[5] = (byte)count; message.MsgContent[6] = (byte)(no + 1); //if (no == 0) //{ // Array.Copy(content, 0, message.MsgContent, 6, length); //} //else //{ // Array.Copy(content, index, message.MsgContent, 6, length); //} Array.Copy(content, index, message.MsgContent, headLength, length); //var tmp = new byte[length]; //Array.Copy(content, index, tmp, 0, length); //var str = SmsMessage.Ucs2Encoding.GetString(tmp); //_log.InfoFormat("发送信息:{0}", str); } message.MsgLength = (uint)message.MsgContent.Length; }