问题:java.net.InetAddress 结果与 MYSQL 结果相比是错误的

ISSUE: java.net.InetAddress RESULTS are wrong when compared with MYSQL results

我遵循了 中的答案(William Brendel 建议),但大多数时候 returns 将结果与 MYSQL 进行比较时会出现错误结果。请评论

InetAddress bar = InetAddress.getByName("187.210.139.0");
value = ByteBuffer.wrap(bar.getAddress()).getInt();

您可以在此处查看结果...

JAVA 结果:(参考:http://ideone.com/CJ3qCU

returns: 1143829760

MYSQL 结果:

mysql> select inet_aton("187.210.139.0");
+----------------------------+
| inet_aton("187.210.139.0") |
+----------------------------+
|                 3151137536 |
+----------------------------+

这里有什么问题..任何错误??请帮忙!!

结果不是Java-1143829760吗?不是 1143829760?

无论如何,在Java,

wrap(bar.getAddress()).getInt();

它returns "signed int", 而在mysql,

inet_aton();

它returns“unsigned int”。

IP地址“187.210.139.0”可转换成二进制数为:

1011 1011(187). 1101 0010(210). 1000 1011(139). 0000 0000(0)

这些函数和方法在将IP转换为二进制数后读取这个去除点(.)。

然后他们计算出那个地址。

这就是为什么“inet_aton()”returns 比“wrap(bar.getAddress()).getInt()”;

大的原因