gpt4 book ai didi

java - ISSUE : java.net.InetAddress RESULTS 与 MYSQL 结果相比是错误的

转载 作者:行者123 更新时间:2023-11-30 22:29:40 25 4
gpt4 key购买 nike

我遵循了 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 |
+----------------------------+

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

最佳答案

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

无论如何,在 Java 中,

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

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

inet_aton();

它返回“unsigned int”。

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

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

这些函数和方法读取这个把IP转换成二进制后去掉点号(.)。

然后他们计算那个地址。

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

关于java - ISSUE : java.net.InetAddress RESULTS 与 MYSQL 结果相比是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com