ПРОБЛЕМА: 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()";

Другие вопросы по тегам