2013-04-05 15 views
7

czy inet_aton nie zakłada znormalizowania wersji internetowej adresu kropkowego? dlaczego otrzymuję różne wartości wyjściowe dla przykładu poniżej?Normalizacja adresu IPv4 w inet_aton

int main(){ 
    char USER_IP[16] = "192.168.002.025"; 
    char USER_IP2[16] = "192.168.2.25"; 
    struct sockaddr_in addr; 
    struct sockaddr_in addr2; 

    inet_aton(USER_IP2, &addr.sin_addr); 
    inet_aton(USER_IP, &addr2.sin_addr); 

    printf("addr.sin_addr:%lu\n", addr.sin_addr); 
    printf("addr2.sin_addr:%lu\n", addr2.sin_addr); 


    return 0; 
} 

Wydajność:

addr.sin_addr:419604672 
addr2.sin_addr:352495808 

Odpowiedz

12

z documentation

składników przerywaną można go określić w układzie dziesiętnym, ósemkowe (z poprzedzającym 0) lub> szesnastkowym , z wiodącym 0X)

oznacza to, że

char USER_IP[16] = "192.168.002.025"; 

oznacza 192 168 2 (25 ÓSEMKOWY == 21) i

char USER_IP2[16] = "192.168.2.25"; 

oznacza, 192 168 2 25