写项目的时候有用到给Mac地址依次加1的操作,但是搜了很多资料没有搜到C# 的实现,不过有搜到C语言的实现, 理解的C实现后,加入的自己的一些思路实现了Mac地址+1操作。
但是该代码有些又臭又长!
思路是将原mac地址分为三个字符串:每次需要改哪一个字符,将需要改的字符拆分出来, 修改后再拼接起来。(确实没有找到怎么在C#中怎么修改mac地址的合适的思路,有想过将传进的mac地址转换成char[] 数组, 然后从后往前遍历操作, 但是没有成功)
以下为代码, 可能有可以优化的部分
private String macIncrease(String macAdd)
{
int num = 16;
while (num >= 0)
{
String start = "";
String change = "";
String end = "";
if (num == 16)
{
start = macAdd.Substring(0, num);
change = macAdd.Substring(num, 1);
}
else if (num == 0)
{
change = macAdd.Substring(num, 1);
end = macAdd.Substring(1, 16);
}
else
{
start = macAdd.Substring(0, num);
change = macAdd.Substring(num, 1);
end = macAdd.Substring(num+1,16-num);
}
if ( 0 == String.Compare(change, "9"))
{
change = change.Replace("9","A");
macAdd = start + change + end;
break;
}
else if (0 == String.Compare(change, "F"))
{
change = change.Replace("F", "0");
macAdd = start + change + end;
num--;
}
else if (0 == String.Compare(change, ":"))
{
num--;
}
else
{
if (0 == String.Compare(change, "A"))
{
change = change.Replace("A", "B");
macAdd = start + change + end;
}
else if (0 == String.Compare(change, "B"))
{
change = change.Replace("B", "C");
macAdd = start + change + end;
}
else if (0 == String.Compare(change, "C"))
{
change = change.Replace("C", "D");
macAdd = start + change + end;
}
else if (0 == String.Compare(change, "D"))
{
change = change.Replace("D", "E");
macAdd = start + change + end;
}
else if (0 == String.Compare(change, "E"))
{
change = change.Replace("E", "F");
macAdd = start + change + end;
}
else
{
int tmp = int.Parse(change);
tmp = tmp + 1;
change = tmp.ToString();
macAdd = start + change + end;
}
break;
}
}
return macAdd;
}