MAC 地址 ( Wikipedia article ) 通常采用 6 个十六进制数字的格式,用分号分隔,例如 14:10:9F:D4:04:1A
。
在 C# 中,它可以作为 string
传递,而一些库将这些作为 UInt64
或 ulong
进行处理。
问题
string
、十六进制表示、ulong
之间有什么关系,我如何从一个转到另一个?
最佳答案
MAC 地址是 HEX
如正确描述here :
The MAC address is very nearly a hex string. In fact, if you remove the ':' characters, you have a hex string.
14:10:9F:D4:04:1A
字面意思是0x14109FD4041A
,只是更容易阅读。
string
到 UInt64
并返回
MAC 地址由 6 个字节,48 位组成,适合 UInt64
并有 2 个字节备用。排除 MSB 与 LSB 排序的复杂性,您可以使用以下 2 种方法:
格式化成字符串
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)
关于c# - 如何将 MAC 地址从字符串转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519301/