ПРОБЛЕМА: РЕЗУЛЬТАТЫ java.net.InetAddress неверны по сравнению с результатами MYSQL

Я следил за ответом в https://stackoverflow.com/a/2241269/2458223 (который предложил Уильям Брендель) но большую часть времени возвращает неправильные результаты, когда я сравниваю результаты с 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 |
+----------------------------+

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


person Sathish Kumar S    schedule 10.12.2015    source источник


Ответы (1)


Разве результат в Java не -1143829760? не 1143829760?

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

обернуть (bar.getAddress()).getInt();

Он возвращает подписанный int, а в mysql

инет_атон();

Возвращает беззнаковое целое.

IP-адрес 187.210.139.0 можно преобразовать в двоичное число:

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

Эти функция и метод считывают это удаление точек (.) после преобразования IP в двоичное число.

И они вычисляют этот адрес.

По этой причине inet_aton() возвращает большее число, чем wrap(bar.getAddress()).getInt();

person PRKM    schedule 10.12.2015