我有inet_aton
轉換網絡地址的問題。下面的代碼工作正常的地址10.0.0.1
inet_aton轉換爲010.000.000.001錯誤?
char *x1;
struct sockaddr_in si_other;
inet_aton("10.0.0.1", &si_other.sin_addr);
printf("si_other.sin_addr =%lu\n",si_other.sin_addr);
x1 = inet_ntoa(si_other.sin_addr);
printf("x1=%s\n",x1);
它輸出轉換:
si_other.sin_addr =16777226
x1=10.0.0.01
沒有問題爲止。當192.168.0.1
和192.168.000.001
傳遞
si_other.sin_addr2 =16777224
x2=8.0.0.01
功能正常工作:然而,當010.000.000.001
傳遞
char *x2;
struct sockaddr_in si_other2;
inet_aton("010.000.000.001", &si_other2.sin_addr);
printf("si_other2.sin_addr =%lu\n",si_other2.sin_addr);
x2 = inet_ntoa(si_other2.sin_addr);
printf("x2=%s\n",x2);
輸出函數工作怪異。
任何人都可以解釋我有什麼問題以及如何解決問題? (注意:我需要通過我的代碼中的010.000.000.001
的IP地址)
如果無法將點分十進制地址標準化爲標準可變寬度表示法,則必須編寫自己的函數,大約相當於處理非標準固定寬度的「inet_aton」,前導零填充IPv4地址。玩的開心! –