1

我遵循了https://stackoverflow.com/a/2241269/2458223中的答案(William Brendel 建议),但是当我将结果与 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 |
+----------------------------+

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

4

1 回答 1

0

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

无论如何,在Java中,

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

它返回“signed int”,在 mysql 中,

inet_aton();

它返回“无符号整数”。

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

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

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

他们计算那个地址。

这就是为什么“inet_aton()”返回的数字大于“wrap(bar.getAddress()).getInt()”的原因;

于 2015-12-10T10:07:42.423 回答