短消息采用PDU模式发送,为什么总有部分字节数据对方接收不到(最后几个字节丢失)?
短消息采用PDU模式发送(7-bit格式,ucs2格式就不会),为什么总有部分字节数据对方接收不到(最后几个字节丢失)?大虾们 帮帮忙了 --------------------编程问答-------------------- 采用什么Modem?
7-bit和ucs32,看看这里,我做Siemens T35用的是ucs32模式,没问题。
SMS是由Etsi所制定的一个规范(GSM 03.40 和 GSM 03.38)。当使用7-bits编码时,它可以发送最多160个字符;但用8-bit编码,最多可以发送140个字符,通常无法直接通过手机显示;还有用16-bit编码时,最多70个字符,被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。我们今天讨论的是UCS2编码,也就是说,最多只能发送70个字符,不管英文还是中文。 --------------------编程问答-------------------- 用手机连到电脑来发送短信
我用的是7-bit编码 用ucs2 编码时正常 没问题
但是用7-bit编码 最后字节总会丢失几位
算法如下 网上找到 版本都一样 应该不会错
int iLeft=0;
string sReturn="";
StringBuilder sb=new StringBuilder();
for(int i=0;i<s.Length;i++)
{
// 取源字符串的计数值的最低3位
int iChar = i & 7;
byte bSrc=(byte)char.Parse(s.Substring(i,1));
// 处理源串的每个字节
if(iChar == 0)
{
// 组内第一个字节,只是保存起来,待处理下一个字节时使用
iLeft = (int)char.Parse(s.Substring(i,1));
}
else
{
// 组内其它字节,将其右边部分与残余数据相加,得到一个目标编码字节
sReturn=(bSrc << (8-iChar) | iLeft).ToString("X4");
// 将该字节剩下的左边部分,作为残余数据保存起来
iLeft = bSrc >> iChar;
// 修改目标串的指针和计数值 pDst++;
sb.Append(sReturn.Substring(2,2));
string ssss=sb.ToString();
}
}
string sss=sb.ToString();
sb.Append(sReturn.Substring(0,2));
string ss=(sb.Length/2).ToString("X2")+sb.ToString();
return (sb.Length/2).ToString("X2")+sb.ToString(); --------------------编程问答-------------------- 顶起来 顶起来 --------------------编程问答-------------------- 顶起来 顶起来 大家帮帮忙哈 十万火急
补充:.NET技术 , C#