Ява. Преобразовать строку в точечный IP-адрес

1

Я извлекаю IP-адреса из таблицы с помощью запроса (oracle, pl/sql):

String selectTableSQL = "SELECT IP "
                      + "FROM table";

ResultSet rs = stmt.executeQuery(selectTableSQL);

Я получаю строки следующим образом:

String ip = rs.getString("IP");

Вот моя проблема: некоторые IP-адреса (полученные строки) выглядят как -1402732545 но некоторые вроде 16711681. Как конвертировать их в пунктирные IP-адреса (172.20.10.226)?

Большое спасибо!

  • 1
    @ BackSlash, будь снисходительным ...
  • 1
    BackSlash, это пример того, как я хотел бы получить IP-адреса.
Теги:
ip

2 ответа

2
Лучший ответ

Вы получаете IP-адрес как целочисленное значение, у guava есть InetAddresses -

String addressStr = InetAddresses.fromInteger(Integer.parseInt(ip)).getHostAddress();

Или, используя только обычный Java-код,

String addressStr = InetAddress.getByAddress(BigInteger.valueOf(Integer.parseInt(ip))
    .toByteArray()).getHostAddress();
  • 0
    Эллиот Фриш, я попробовал второй метод, но получил ошибку: не найдено подходящего метода для valueOf(String) . Можете ли вы помочь мне исправить это?
  • 0
    @ user3649515 Отредактировано. Я пропустил Integer.parseInt() там.
Показать ещё 1 комментарий
2

Вы действительно хотите преобразовать число в человеческий читаемый IP-адрес. Взгляните на эту статью для деталей. http://www.mkyong.com/java/java-convert-ip-address-to-decimal-number/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню