我有一个名称列表(msfuncionarios
),名称,RFID-MAC(6对十六进制数字)等。
当我读取RFID(输出6位十进制数字)时,我需要用该MAC检查名称。
我有下面的代码,但我认为这会打破内存错误。 这个清单有2666项。
我在Raspberry PI 2 v.B上运行该程序。
string ConvertUidToName(string uid)
{
int j, h;
int k = 0;
string final="";
string[] separators = { "-" };
for (k=0;k <= msfuncionarios.count;k++)
{
TextBox_produto.Text = k.ToString();
string[] words = msfuncionarios[k].MAC.Split(separators, StringSplitOptions.RemoveEmptyEntries);
i = 0;
h = 0;
for (h = 2; h <= 5; h++)
{
j = Convert.ToInt32(words[h], 16);
final = final + j;
}
j = 0;
if (final == uid )
{
return msfuncionarios[k].Nome.ToString();
}
final = "";
}
return uid.ToString();
}
答案 0 :(得分:4)
问题出在for
条件:
for (k=0; k <= msfuncionarios.count; k++)
您正在使用<=
运算符,因此循环运行2667次,即使对于超出范围的不存在项msfuncionarios[2666]
也是如此。您可以使用<
运算符来修复它。
for (k=0; k < msfuncionarios.count; k++)
答案 1 :(得分:1)
解决!
我在API中发现了一个写在列表中的bugg。该列表包含空MAC和转换中断。