Java: Как преобразовать IP-адрес DECIMAL (39,0) MySQL в строку - PullRequest
2 голосов
/ 22 сентября 2009

Итак, мне сказали, что администраторы баз данных будут хранить IP-адреса в поле DECIMAL (39,0) в нашей базе данных MySQL.

Как мне перевести это в строку для передачи другим нашим приложениям?

Примечание. Наши базы данных не могут больше загружаться, поэтому в приложении Java необходимо выполнить как можно большую часть работы.

Примечание 2: поддержка IPv6 обязательна.

Ответы [ 2 ]

5 голосов
/ 22 сентября 2009

Использование

<a href="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa" rel="nofollow noreferrer">INET_NTOA</a>

Например: SELECT INET_NTOA (num) AS ipaddr;

и

<a href="http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton" rel="nofollow noreferrer">INET_ATON</a>

Например: INSERT INTO addrTbl VALUES (..., INET_ATON ('192.168.0.1'), ...)

Это работает, потому что IPv4 изначально был разработан, чтобы IP-адреса определялись как 32-разрядные числа. десятично-десятичная запись предназначена для удобства чтения.

Обновление

Если вы хотите выполнить преобразование числа в десятичную систему счисления в Java, на сайте MindProd есть пример .

0 голосов
/ 22 сентября 2009

Проблема решена, я убедил ребят из базы данных просто сохранить ее как VARCHAR.

...