ether_addr_octet в байте порядка хоста - PullRequest
0 голосов
/ 18 февраля 2011

Я хотел бы преобразовать struct ether_addr (ether_addr_octet) в целочисленное представление порядка байтов хоста. Есть идеи?

ntohl(eth->ether_addr_octet)

не работает, потому что ether_addr_octet является массивом символов.

Привет

Ответы [ 2 ]

0 голосов
/ 20 апреля 2012

Вы можете преобразовать его в символ и затем сделать что-то еще, что хотите ...

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;
}

Надеюсь, это поможет

0 голосов
/ 18 февраля 2011

Я не уверен, какой будет семантика этого. Эфир 48 бит, а наибольшее ntoh * для 32 бит. Я полагаю, вы можете создать 64-битное значение, анализируя массив char и дважды вызывая ntohl ()

...