无法将类型字符串隐式转换为byte []

时间:2012-05-29 02:05:51

标签: c# string c#-4.0 encoding

我有一个用加密哈希加密密码的类。

但是如果我想将null传递给类,我会收到以下错误:Cannot implicitly convert type string to byte[]

这是类代码:

public class MyHash
{
    public static string ComputeHash(string plainText, 
                            string hashAlgorithm, byte[] saltBytes)
    {
        Hash Code
    }
}

当我使用该类时,我收到错误:“无法将类型字符串隐式转换为byte []”

//Encrypt Password
byte[] NoHash = null;
byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);

2 个答案:

答案 0 :(得分:14)

这是因为你的'ComputeHash'方法返回一个字符串,并且你试图将这个返回值赋给一个带有的字节数组;

byte[] encds = MyHash.ComputeHash(Password, "SHA256", NoHash);

字符串到字节[]没有隐式转换,因为存在许多不同的编码来将字符串表示为字节,例如ASCII或UTF8。

您需要使用适当的编码类显式转换字节,如此;

string x = "somestring";
byte[] y = System.Text.Encoding.UTF8.GetBytes(x);

答案 1 :(得分:0)

ComputeHash函数的返回类型为string。您尝试将函数的结果分配给encds,即byte[]。编译器将此差异指向您,因为没有从stringbyte[]的隐式转换。