可能看着有点别扭,应该没有问题,浪费了我1小时了,希望有效,呵呵。private static string Decoded(string strSource)
{
string s1=strSource.Substring(2);//注意如果有效字节长度超过了FF,需要算一下从第几个开始是数据
int  h,l;
char f,s;
byte[] b=new byte[s1.Length/2]; for(int i=0;i<s1.Length/2;i++)
{
f=s1[2*i];
s=s1[2*i+1];
if(f<'0' || f>'9') 
h=10+(Convert.ToInt16(f)-Convert.ToInt16('A'));
else
h=Convert.ToInt16(f)-48;

if(s<'0' || s>'9') 
l=10+(Convert.ToInt16(s)-Convert.ToInt16('A'));
else
l=Convert.ToInt16(s)-48;
b[i]=Convert.ToByte(h*16+l);
}
s1=Encoding.BigEndianUnicode.GetString(b);
return s1;
}

解决方案 »

  1.   

    可能看着有点别扭,应该没有问题,浪费了我1小时了,希望有效,呵呵。private string Decoded(string strSource)
    {
    string s1=strSource.Substring(2);//注意如果有效字节长度超过了FF,需要算一下从第几个开始是数据
    int  h,l;
    char f,s;
    byte[] b=new byte[s1.Length/2]; for(int i=0;i<s1.Length/2;i++)
    {
    f=s1[2*i];
    s=s1[2*i+1];
    if(f<'0' || f>'9') 
    h=10+(Convert.ToInt16(f)-Convert.ToInt16('A'));
    else
    h=Convert.ToInt16(f)-48;

    if(s<'0' || s>'9') 
    l=10+(Convert.ToInt16(s)-Convert.ToInt16('A'));
    else
    l=Convert.ToInt16(s)-48;
    b[i]=Convert.ToByte(h*16+l);
    }
    s1=Encoding.BigEndianUnicode.GetString(b);
    return s1;
    }