C# 如何解决校验数组的索引和长度?
错误消息:系统。ArgumentException:“目标数组不够长,无法复制集合中的所有项。检查数组索引和长度。'C# 如何解决校验数组的索引和长度?,c#,byte,converters,C#,Byte,Converters,错误消息:系统。ArgumentException:“目标数组不够长,无法复制集合中的所有项。检查数组索引和长度。' public static string PassConv(string Password) { int iLoop; int iL; int iTotal; int iValue; string sPassConv; iL = 3; iTotal = 0; for (iLoop = 1; iLoop <=
public static string PassConv(string Password)
{
int iLoop;
int iL;
int iTotal;
int iValue;
string sPassConv;
iL = 3;
iTotal = 0;
for (iLoop = 1; iLoop <= Password.Length; iLoop++) {
string sNo = Password.Substring(iLoop-1,1);
byte[] asciiBytes = Encoding.ASCII.GetBytes(sNo);
iValue = BitConverter.ToInt32(asciiBytes, 0); ---->**Error**
iTotal = iTotal + iValue * (iL + iLoop - 1);
sPassConv = iTotal.ToString();
}
return sPassConv;
}
公共静态字符串PassConv(字符串密码)
{
int iLoop;
int iL;
国际贸易总公司;
国际竞争力;
字符串sPassConv;
iL=3;
iTotal=0;
对于(iLoop=1;iLoop**错误**
iTotal=iTotal+iValue*(iL+iLoop-1);
sPassConv=iTotal.ToString();
}
返回sPassConv;
}
请帮忙
谢谢由于有这么多冗余代码,我试图达到你的想法。通过使用:
甚至导出每个字符SubString
可以从这些字符返回所有字节数组Encoding.ASCII.GetBytes
也应为4字节二进制输入 这个函数似乎没有任何帮助位转换器
- 声明iLoop=1,但内部循环不执行iLoop-1
多次从iTotal获取值,应该放在循环之外sPassConv
public static string PassConv(string Password)
{
int iLoop;
int iL;
int iTotal;
int iValue;
string sPassConv = "";
iL = 3;
iTotal = 0;
for (iLoop = 1; iLoop <= Password.Length; iLoop++)
{
string sNo = Password.Substring(iLoop - 1, 1);
iValue = Encoding.ASCII.GetBytes(sNo)[0];
iTotal = iTotal + iValue * (iL + iLoop - 1);
sPassConv = iTotal.ToString();
}
return sPassConv;
}
结果呢
public static void MainFunc()
{
Console.WriteLine(PassConv("ABCD")); // 1202
Console.WriteLine(PassConv2("ABCD")); // 1202
Console.WriteLine(PassConv3("ABCD")); // 1202
}
希望有帮助!你到底想在这里做什么?现在你正在从字符串中提取一个字符(
密码
),使用ASCII编码将其编码为字节,然后尝试将该字节数据视为包含整数的4字节二进制值。由于您使用ASCII,我希望asciiBytes
的长度可能始终为1。我假设您真的想要?啊,您似乎想要。
public static string PassConv3(string Password, int iL = 3)
{
int iTotal = 0;
for (var iLoop = 0; iLoop < Password.Length; iLoop++)
{
iTotal += Password[iLoop] * (iL + iLoop);
}
return iTotal.ToString();
}
public static void MainFunc()
{
Console.WriteLine(PassConv("ABCD")); // 1202
Console.WriteLine(PassConv2("ABCD")); // 1202
Console.WriteLine(PassConv3("ABCD")); // 1202
}