ПРОБЛЕМА: java.net.InetAddress РЕЗУЛЬТАТЫ неверны по сравнению с результатами MYSQL
Я следовал за ответом в /questions/21079956/perehod-s-127001-na-2130706433-i-obratno/21079966#21079966 (который предложил Уильям Брендель), но большую часть времени возвращает неправильные результаты, когда я сравниваю результаты с 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 |
+----------------------------+
В чем здесь проблема.. любая ошибка?? Пожалуйста помоги!!
1 ответ
Разве не результат в 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()";