2009-02-04 51 views
1

我消费从我的应用程序在C#.net(2.0)一个Web服务有返回值(如字符串)是这样的:如何将此序列转换为此散列?

%23k.%0d%16%c4%8a%18%efG%28%b9c%12%b7%f1%e2%e7j%93 

我知道,对于真正的价值是:

236B2E0D16C48A18EF4728B96312B7F1E2E76A93 

但我不知道如何从返回值转换为实际值。

有什么想法?

无论如何,谢谢你的时间。 干杯。

回答

3

下乡行:

如果遇到“%”复制后面的两个字符

否则取发现的字符的ASCII码,并输出作为十六进制

%23 => 23 
k => 6B 
. => 2E 
%0d => 0D 

ASCII Table

但在代码中,我敢肯定,这将工作:

char c = 'k'; 
int ascii = (int)c; 
string hex = ascii.ToString("X2"); 
0

我不能肯定这一点,但尝试使用System.Web.HttpUtility.UrlDecode方法

+0

试过,但没有...无论如何谢谢 – 2009-02-04 23:18:29

1

感谢您的信息罗布。如果有人想在这里完整的方法是这样的:

static private string convertInfoHash(string encodedHash) 
{ 
    string convertedHash = string.Empty; 
    for (int i = 0; i < encodedHash.Length; i++) 
    { 
     if (encodedHash[i] == '%') 
     { 
      convertedHash += String.Format("{0}{1}",encodedHash[i + 1],encodedHash[i + 2]); 
      i += 2; 
     } 
     else 
     { 
      int ascii = (int)encodedHash[i]; 
      convertedHash += ascii.ToString("X2"); 

     } 
    } 

    return convertedHash; 
}