如何将此序列转换为此哈希?

时间:2009-02-04 23:13:37

标签: c# .net hash

我正在使用C#.net(2.0)中的应用程序中的Web服务返回值(如字符串),如下所示:

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

我知道真正的价值在于:

236B2E0D16C48A18EF4728B96312B7F1E2E76A93

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

有什么想法吗?

无论如何,谢谢你的时间。 欢呼声。

3 个答案:

答案 0 :(得分:3)

走下线:

如果您遇到'%',请复制下两个字符

否则取出找到的字符的ascii代码并输出为十六进制

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

ASCII Table

但是在代码中我很确定这会起作用:

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

答案 1 :(得分:1)

感谢Rob提供的信息。如果有人想要完整的方法,那就是:

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;
}

答案 2 :(得分:0)

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