Используя одно из моих приложений WinForms, мне нужно отобразить MAC-адрес различных сетевых адаптеров компьютера в текстовом поле.Формирование MAC-адреса в WinForms
Этот код прекрасно работает в получении строки:
public string AdapterAddress(string criteria)
{
adapteraddress = (from nic in NetworkInterface.GetAllNetworkInterfaces()
where nic.Name == criteria
select nic.GetPhysicalAddress().ToString()
).First();
return adapteraddress;
}
, но он выводит в
003E4B880D01
в отличие от
00:3E:4B:88:0D:01
Я хотел бы, если бы я мог бы использовать это непосредственно для командной строки «ipconfig/all»
Я знаю, что мне нужно что-то сделать, взяв отдельные байты, а затем присоединяя их к String.Join (":", blah blah), но я не могу это получить.
Вот мой грязный способ сделать это, но я чувствую, что я мог бы столкнуться с некоторыми неожиданными проблемами с этим позже:
public string AdapterAddress(string criteria)
{
adapteraddress = (from nic in NetworkInterface.GetAllNetworkInterfaces()
where nic.Name == criteria
select nic.GetPhysicalAddress().ToString()
).First();
var tempaddress = SplitMacAddress(adapteraddress);
adapteraddress = tempaddress;
return adapteraddress;
}
public string SplitMacAddress(string macadress)
{
for (int Idx = 2; Idx <= 15; Idx += 3)
{
macadress = macadress.Insert(Idx, ":");
}
return macadress;
}
Есть чистое решение, что я не хватает?
Как раз на наименовании я бы не назвал функцию «SplitMacAddress». Это означает, что вы возвращаете отдельные биты. Лучшее имя может быть «FormatMacAddress». :) Извините, но я не могу помочь в реальной проблеме. –
Что именно не так с вашим методом? Что не так с '003E4B880D01', потому что это фактическое значение. Значение на самом деле не '00: 3E: 4B: 88: 0D: 01', это просто красивая печать для нас, людей. –
Итерирование кажется излишним, и я хотел бы добавить некоторые проверки позже, если бы я мог сделать все это в одной области, я чувствую, что он становится намного более пригодным для повторного использования. –