主机顺序字节中的ether_addr_octet

时间:2011-02-18 10:08:58

标签: c ethernet

我想将struct ether_addr(ether_addr_octet)转换为整数主机字节顺序表示。有什么想法吗?

ntohl(eth->ether_addr_octet)

无效,因为ether_addr_octet是一个char数组。

此致

2 个答案:

答案 0 :(得分:0)

我不确定这将是什么语义。 以太是48位,最大的ntoh *是32位值。 我想你可以创建一个解析char数组的64位值,然后调用ntohl()两次......

答案 1 :(得分:0)

你可以把它转换成char然后你可以做你想要的其他事情......

char *ether_ntoa_my(const struct ether_addr *addr){
    static char buf[18];
    sprintf(buf, "%02x%02x:%02x%02x:%02x%02x",
            addr->ether_addr_octet[0], addr->ether_addr_octet[1],
            addr->ether_addr_octet[2], addr->ether_addr_octet[3],
            addr->ether_addr_octet[4], addr->ether_addr_octet[5]);
    return buf;
}

我希望它有所帮助