由于字符串,我对最后一行代码有疑问。即使我正在给我错误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]));
}
}
最佳答案
该行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值。
关于c# - system.linq.strings由于其保护级别而无法访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8527156/