无法将类型“int”隐式转换为“bool”

时间:2012-06-18 21:55:13

标签: c# md5 implicit-conversion

这是我的功能

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 个答案:

答案 0 :(得分:4)

更改for循环并将第二个子句设为bool

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

请注意更改i < data.Length

答案 1 :(得分:3)

你可能打算这样做:

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

或同等的:

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

答案 2 :(得分:1)

问题出在for循环中。第二个词需要成为一个条件。什么是评估整数。因此你得到的错误。

答案 3 :(得分:1)

你想要这个声明。

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

您已将data.Length-1作为终止条件。这实际上是一个整数,终止条件需要是一个布尔值。

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

        foreach (byte b in data) {
            sBuilder.Append(b.ToString("x2"));
        }