2013-04-05 4 views
7

не inet_aton Предположим, чтобы нормализовать точную версию интернет-адреса? почему я получаю разные выходные значения для примера ниже?inet_aton нормализация адреса IPv4

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

выход:

addr.sin_addr:419604672 
addr2.sin_addr:352495808 

ответ

12

от documentation

компоненты пунктирной адреса могут быть указаны в десятичной, восьмеричной (с лидирующим 0), или> шестнадцатеричное , с ведущим 0X)

это означает, что

char USER_IP[16] = "192.168.002.025"; 

предполагает 192 168 2 (25 восьмеричной == 21) и

char USER_IP2[16] = "192.168.2.25"; 

подразумевает 192 168 2 25

Смежные вопросы