手机中的7-bit编码并非utf-7编码,7-bit码是一种压缩的pdu2码.我还是给你写一段7-bit解码程序吧:
/// <summary>
/// 对7-bit编码进行解码
/// </summary>
/// <param name="s">要解码的字符串</param>
/// <returns>解码后的英文字符串</returns>
static public string DecodingBit7(string s)
{
int iByte=0;
int iLeft=0;
// 将源数据每7个字节分为一组,解压缩成8个字节
// 循环该处理过程,直至源数据被处理完
// 如果分组不到7字节,也能正确处理
System.Text.StringBuilder sb=new System.Text.StringBuilder();
for(int i=0;i<s.Length;i+=2)
{
byte bSrc=byte.Parse(s.Substring(i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
// 将源字节右边部分与残余数据相加,去掉最高位,得到一个目标解码字节
sb.Append((((bSrc << iByte) | iLeft) & 0x7f).ToString("X2"));
// 将该字节剩下的左边部分,作为残余数据保存起来
iLeft = bSrc >> (7-iByte);
// 修改字节计数值
iByte++;
// 到了一组的最后一个字节
if(iByte == 7)
{
// 额外得到一个目标解码字节
sb.Append(iLeft.ToString("X2"));       
// 组内字节序号和残余数据初始化
iByte = 0;
iLeft = 0;
}
}
string sReturn=sb.ToString();
byte [] buf=new byte[sReturn.Length/2];
for(int i=0;i<sReturn.Length;i+=2)
{
buf[i/2]=byte.Parse(sReturn.Substring(i,2),System.Globalization.NumberStyles.AllowHexSpecifier);
}
return System.Text.Encoding.ASCII.GetString(buf);
}