这是我的功能
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”
答案 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"));
}