system.linq.strings由于其保护级别而无法访问

时间:2011-12-15 21:55:44

标签: c#

由于字符串,我遇到了最后一行代码的问题。它给了我错误system.linq.strings is inaccessible due to its protection level即使我是 使用Microsoft.VisualBasic命名空间。

private byte[] CreateKey(string strPassword)
{
    //Convert strPassword to an array and store in chrData.
    char[] chrData = strPassword.ToCharArray();
    //Use intLength to get strPassword size.
    int intLength = chrData.GetUpperBound(0);
    //Declare bytDataToHash and make it the same size as chrData.
    byte[] bytDataToHash = new byte[intLength + 1];

    //Use For Next to convert and store chrData into bytDataToHash.
    for (int i = 0; i <= chrData.GetUpperBound(0); i++) {
        bytDataToHash[i] = Convert.ToByte(Strings.Asc(chrData[i]));
    }
}

1 个答案:

答案 0 :(得分:3)

bytDataToHash[i] = Convert.ToByte(Strings.Asc(chrData[i]));可能无法按照您的意愿行事。

您可能希望代码执行以下操作:

bytDataToHash = Encoding.Unicode.GetBytes(strPassword);

这将获得密码的字节。

但是你想尝试使用ASCII? (Asc调用暗示了这一点)。如果你真的不想要unicode,你可以这样做:

bytDataToHash = Encoding.ASCII.GetBytes(strPassword);

但对于那条坏线的更好的翻译是:

Convert.ToByte(chrData[i]); // Do not use! Will cause some data loss!!!

我不知道为什么你想在过渡期间获得角色的ascii值。