1

这是我的功能

public string getMD5hash(string input)
{
    //create a new instance of MD5 object
    MD5 md5Hasher = MD5.Create(); 
    //convert the input value to byte array
    byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
    StringBuilder sBuilder = new StringBuilder();

    for (int i = 0; data.Length -1 ; i++)
    {
        sBuilder.Append(data[i].ToString("x2"));
    }
    return sBuilder.ToString();
}

我收到一个错误data.Length,无法将类型“int”隐式转换为“bool”

4

4 回答 4

4

更改for循环并使第二个子句 a bool

for (int i = 0; i < data.Length; i++)
{
    sBuilder.Append(data[i].ToString("x2"));
}

注意变化i < data.Length

于 2012-06-18T21:56:55.500 回答
3

您可能打算这样做:

for (int i = 0; i <= data.Length-1; i++) { ... }

或同等学历:

for (int i = 0; i < data.Length; i++) { ... }
于 2012-06-18T21:57:24.093 回答
1

问题出在 for 循环中。第二项需要是一个条件。那里的内容将评估为整数。因此你得到的错误。

于 2012-06-18T21:57:35.033 回答
1

你想要这个 for 声明。

 for (int i = 0; i < data.Length; i++) {

你有data.Length-1作为终止条件。那实际上是一个整数,终止条件需要是一个布尔值。

请注意,您也可以使用这种形式的循环,它更简单且效果也很好。

        foreach (byte b in data) {
            sBuilder.Append(b.ToString("x2"));
        }
于 2012-06-18T22:03:47.827 回答