【问题标题】:Convert my MAC Address into byte array when build packet构建数据包时将我的 MAC 地址转换为字节数组
【发布时间】:2014-07-24 20:35:36
【问题描述】:

我想构建简单的DHCP packet,其中一个协议 oprion 是client mac address(选项 61),所以我有我的 mac 地址:

string macAddress = "00:14:22:18:81:11";

我想把它放在我的数据包数组中(6 个字节),这是我尝试过的,我想知道如何做到这一点(我尝试将我的字符串转换为字节 [],但这个数组长度是 24)

        // Set requested ip address - 61
        index += DHCPMessageTypeLength;
        packetArrayBytes[index] = 61; // option 
        packetArrayBytes[index + 1] = 7; // length
        packetArrayBytes[index + 2] = 1; // hardware type Ethernet
        packetArrayBytes[index + 3] = ?; // mac
        packetArrayBytes[index + 4] = ?; // mac
        packetArrayBytes[index + 5] = ?; // mac
        packetArrayBytes[index + 6] = ?; // mac
        packetArrayBytes[index + 7] = ?; // mac
        packetArrayBytes[index + 8] = ?; // mac

【问题讨论】:

    标签: c# .net packet


    【解决方案1】:

    这是我的建议:

    List<byte> packet = new List<byte>();
    packet.AddRange(new byte[] { 61, 7, 1 });
    packet.AddRange(macAddress.Split(':').Select(b => Convert.ToByte(b, 16)));
    
    Array.Copy(packet.ToArray(), 0, packetArrayBytes, DHCPMessageTypeLength, packet.Count);
    

    【讨论】:

    • macAddress.Split(':').Select(b => Convert.ToByte(b)) 当字符串包含字母(A、B、C、D、E、F)时给我错误) :(
    • @Bosiwow 感谢您指出这一点,我忘记为十六进制转换指定基数 16。请参阅编辑后的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 2012-09-14
    • 2017-10-07
    • 1970-01-01
    • 2018-04-05
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多