Я извлекаю 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)?
Большое спасибо!
Вы получаете IP-адрес как целочисленное значение, у guava есть InetAddresses -
String addressStr = InetAddresses.fromInteger(Integer.parseInt(ip)).getHostAddress();
Или, используя только обычный Java-код,
String addressStr = InetAddress.getByAddress(BigInteger.valueOf(Integer.parseInt(ip))
.toByteArray()).getHostAddress();
valueOf(String)
. Можете ли вы помочь мне исправить это?
Integer.parseInt()
там.
Вы действительно хотите преобразовать число в человеческий читаемый IP-адрес. Взгляните на эту статью для деталей. http://www.mkyong.com/java/java-convert-ip-address-to-decimal-number/