2012-06-18 34 views
1

這是我的功能無法隱式轉換類型「INT」到「布爾」

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」到「布爾」

+1

你爲什麼使用MD5的任何原因?只是好奇,因爲它已經過時,不應該用於其他場合。 – tsells

回答

4

更改for循環並使第二子句bool

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

注意的變化i < data.Length

3

你大概的意思做:

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

或等價的:

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

的問題是在for循環。第二個術語需要成爲一個條件。那裏有什麼會評估爲一個整數。因此,你得到的錯誤。

1

你想要這個for語句。

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

您有data.Length-1作爲終止條件。這實際上是一個整數,並且終止條件需要是布爾值。

請注意,您也可以使用這種形式的循環,這是更簡單,效果也很好。

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