由于字符串,我遇到了最后一行代码的问题。它给了我错误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]));
}
}
答案 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值。