【问题标题】:Cannot implicitly convert type "int" to "bool"无法将类型“int”隐式转换为“bool”
【发布时间】:2012-06-18 21:55:13
【问题描述】:

这是我的功能

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”

【问题讨论】:

  • 您使用 MD5 的任何原因?只是好奇,因为它已经过时了,不应该用于除回退场景之外的任何事情。

标签: c# md5 implicit-conversion


【解决方案1】:

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

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

注意i &lt; data.Length的变化。

【讨论】:

    【解决方案2】:

    你可能打算这样做:

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

    或同等的:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        你想要这个 for 声明。

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

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

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

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

        【讨论】:

          猜你喜欢
          • 2019-09-30
          • 2017-10-05
          • 1970-01-01
          • 1970-01-01
          • 2015-03-28
          • 1970-01-01
          • 1970-01-01
          • 2014-04-14
          • 1970-01-01
          相关资源
          最近更新 更多