如何将MAC地址从字符串转换为unsigned int

时间:2018-05-24 22:57:22

标签: c#

MAC地址(Wikipedia article)通常采用分号分隔的6个十六进制数字格式,如14:10:9F:D4:04:1A

在C#中,它可以作为string传递,而有些库会将其作为UInt64ulong进行操作。

问题

string,十六进制表示,ulong之间的关系是什么,以及如何从一个到另一个?

1 个答案:

答案 0 :(得分:0)

MAC地址 HEX

正确描述here

  

MAC地址非常接近十六进制字符串。实际上,如果删除':'字符,则会有一个十六进制字符串。

14:10:9F:D4:04:1A字面意思是0x14109FD4041A,只是更容易阅读。

stringUInt64并返回

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)