问题
In my C# application, I want to get my MAC address by using NetworkInterface
class as the following:
NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()
{
mac = nic.GetPhysicalAddress()
}
But this code returns the MAC without ':' or any other separator.
How can I retrieve the MAC in this format:
88:88:88:88:87:88
using the code above ONLY?
回答1:
try
mac = string.Join (":", (from z in nic.GetPhysicalAddress().GetAddressBytes() select z.ToString ("X2")).ToArray());
回答2:
The help for the command shows one way:
http://msdn.microsoft.com/en-us/library/system.net.networkinformation.physicaladdress.aspx
PhysicalAddress address = adapter.GetPhysicalAddress();
byte[] bytes = address.GetAddressBytes();
for(int i = 0; i< bytes.Length; i++)
{
// Display the physical address in hexadecimal.
Console.Write("{0}", bytes[i].ToString("X2"));
// Insert a hyphen after each byte, unless we are at the end of the
// address.
if (i != bytes.Length -1)
{
Console.Write("-");
}
}
Console.WriteLine();
回答3:
Using the comment by eFloh for using BitConverter I was able to do the following (assuming mac
is predefined as a string).
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
mac = BitConverter.ToString(nic.GetPhysicalAddress().GetAddressBytes()).Replace('-', ':');
//Do whatever else necessary with each mac...
}
回答4:
Where you want to show that, you have to do this:
txtMac.text=getFormatMac(GetMacAddress());
public string GetMacAddress()
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
String sMacAddress = string.Empty;
foreach (NetworkInterface adapter in nics)
{
if (sMacAddress == String.Empty)// solo retorna la mac de la primera tarjeta
{
IPInterfaceProperties properties = adapter.GetIPProperties();
sMacAddress = adapter.GetPhysicalAddress().ToString();
}
}
return sMacAddress;
}
public string getFormatMac(string sMacAddress)
{
string MACwithColons = "";
for (int i = 0; i < macName.Length; i++)
{
MACwithColons = MACwithColons + macName.Substring(i, 2) + ":";
i++;
}
MACwithColons = MACwithColons.Substring(0, MACwithColons.Length - 1);
return MACwithColons;
}
回答5:
Try Something like this:
// Insert Colons on MAC
string MACwithColons = "";
for (int i = 0; i < MAC.Length; i++) {
MACwithColons = MACwithColons + MAC.Substring(i, 2) + ":";
i++;
}
MACwithColons = MACwithColons.Substring(0, MACwithColons.Length - 1); // Remove the last colon
来源:https://stackoverflow.com/questions/7384211/formatting-mac-address-in-c-sharp