c# - 如何将 MAC 地址从字符串转换为无符号整数

标签 c#

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

在 C# 中,它可以作为 string 传递,而一些库将这些作为 UInt64ulong 进行处理。

问题

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,只是更容易阅读。


stringUInt64 并返回

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/

相关文章:

c# - 仅限二进制数 TextBox

c# - 在泛型方法中实例化 Wrapper 对象

c# - Asp.net 中的日期时间选择器

c# - 如何删除字符 8236

c# - 具有多个查询的事务

c# - iText 7.0.4.0 - PdfWriter 为某些 PDF 文件输入生成损坏的 PDF

c# - 对自定义 Web API AuthorizeAttribute 进行单元测试

c# - 使用 AJAX 调用 jQuery 传送文件

c# - 从另一个类更新文本框

c# - 如何在 C# 中获取屏幕上文本的边界框?