INET_NTOA的工作

时间:2014-04-16 05:29:32

标签: mysql database ip-address

任何人都知道MySql INET_NTOA()如何将整数值转换回IP地址格式?我想知道如何在内部执行计算以将IP转换为其原始的互联网标准点分十进制格式。

2 个答案:

答案 0 :(得分:1)

它使用网络byte order(大端)将整数分解为四个字节:

167773449 => A0 00 05 09

然后它将这些字节连接在一起,其间有一个点:

10.0.5.9

答案 1 :(得分:0)

在Binary中写入16777343:
1 0000 0000 0000 0000 0111 1111
从LSB开始分组位(以8为一组形成一个字节):
[1] [0000 0000] [0000 0000] [0111 1111]
现在用小端形式写入十进制(最低字节优先):
127.0.0.1

这可以通过以下方式验证:

struct sockaddr_in antelope;
inet_aton(" 127.0.0.1",& antelope.sin_addr); //将IP存储在羚羊中 的printf("%LLD \ n",antelope.sin_addr.s_addr); //打印16777343
的printf("%S \ n",INET_NTOA(antelope.sin_addr)); //打印127.0.0.1

我希望它有所帮助。