MAC地址(Wikipedia article)通常采用分号分隔的6个十六进制数字格式,如14:10:9F:D4:04:1A
。
在C#中,它可以作为string
传递,而有些库会将其作为UInt64
或ulong
进行操作。
问题
string
,十六进制表示,ulong
之间的关系是什么,以及如何从一个到另一个?
答案 0 :(得分:0)
正确描述here:
MAC地址非常接近十六进制字符串。实际上,如果删除':'字符,则会有一个十六进制字符串。
14:10:9F:D4:04:1A
字面意思是0x14109FD4041A
,只是更容易阅读。
string
至UInt64
并返回 MAC地址由6个字节,48位组成,适合UInt64
,备用2个字节。省略MSB与LSB订购并发症,您可以使用以下两种方法:
格式化为字符串
using System;
using System.Linq;
public static string MAC802DOT3(ulong macAddress)
{
return string.Join(":",
BitConverter.GetBytes(macAddress).Reverse()
.Select(b => b.ToString("X2"))).Substring(6);
}
// usage: var s = MAC802DOT3(0x14109fd4041a);
// var s = MAC802DOT3(22061633504282);
// s becomes "14:10:9F:D4:04:1A"
转换为整数
public static ulong MAC802DOT3(string macAddress)
{
string hex = macAddress.Replace(":", "");
return Convert.ToUInt64(hex, 16);
}
// usage: var m = MAC802DOT3("14:10:9F:D4:04:1A");
// m becomes 22061633504282 (0x14109fd4041a)