2013-04-05 32 views
7

không inet_aton giả sử để chuẩn hóa phiên bản chấm của địa chỉ internet? tại sao tôi nhận được các giá trị đầu ra khác nhau cho ví dụ dưới đây?inet_aton bình thường hóa địa chỉ 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; 
} 

đầu ra:

addr.sin_addr:419604672 
addr2.sin_addr:352495808 

Trả lời

12

từ documentation

thành phần của địa chỉ rải rác có thể được quy định trong hệ thập phân, bát phân (với 0 hàng đầu), hoặc> thập lục phân , với số 0X hàng đầu)

điều này có nghĩa rằng

char USER_IP[16] = "192.168.002.025"; 

ngụ ý 192 168 2 (25 Octal == 21) và

char USER_IP2[16] = "192.168.2.25"; 

ngụ ý 192 168 2 25

Các vấn đề liên quan