2015-12-10 9 views
1

Я следовал за ответом в https://stackoverflow.com/a/2241269/2458223 (что предложил Уильям Брендель), но большую часть времени возвращает неправильные результаты, когда я сравниваю результаты с MYSQL. Пожалуйста, ознакомьтесь сВОПРОС: java.net.InetAddress РЕЗУЛЬТАТЫ неверны по сравнению с результатами 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 | 
+----------------------------+ 

Что такое проблема здесь .. любая ошибка ?? Пожалуйста помоги!!

ответ

0

Не является результатом Java -1143829760? не 1143829760?

Во всяком случае, в Java,

обертывание (bar.getAddress()) GetInt().

возвращает "подписанную 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() »;

+0

да он возвращает -1143829760 –