J'utilise java (avec cadre de ressort) et souhaitez convertir entre les représentations numériques d'adresses IPv4 (par exemple 2130706433) et leurs contreparties textuelles (par exemple Tout le monde sait ce qu'ils sont appelés ou comment les mettre en œuvre? P> 127.0.0.1 code>). Souvent, les méthodes de fonctionnement sont fournies dans des langages de programmation (elles sont généralement appelées
inet_ntoa code> et
iNet_aton code> respectivement) mais je ne peux pas le trouver dans Java. p>
6 Réponses :
java.net.inetaddress.getByAddress (octet [])
Pas exactement comme inet_ntoa, mais très similaire à. p>
Exemple avec longue dispute: P>
String ntoa(long raw) { byte[] b = new byte[] {(byte)(raw >> 24), (byte)(raw >> 16), (byte)(raw >> 8), (byte)raw}; try { return InetAddress.getByAddress(b).getHostAddress(); } catch (UnknownHostException e) { //No way here return null; } }
Merci. Serait bien d'avoir une fonction qui prend un long code> comme argument.
Vous pouvez utiliser BYTEBUFFER . Méthodes: putlong () puis tableau ()
regarde inétaddress dans les Javadocs . Ces fonctions ne sont pas directement prises en charge par l'API standard, mais vous pouvez extraire les deux représentations en utilisant cette classe.
Un petit exemple: (Gardez à l'esprit que les octets sont signés.) P> Si vous avez long-s que vous pouvez utiliser
Merci, semble être une façon fructueuse d'explorer. On dirait qu'il n'y a pas de méthodes qui font ce que je veux tout de suite.
Voici ce que je me suis écrit pour obtenir une représentation numérique d'une adresse IPv4 textuelle: Bien sûr, cela suppose que l'adresse IPv4 est donnée sur un format valide. P> < / p>
Les inetaddresses de Guava feront le tour. P>
regarde le commentaire de l'Ido dans aller de 127.0.0.1 au 2130706433, et retour à nouveau p>
en utilisant La bibliothèque Java iPaddress c'est simple, une ligne de code pour chaque direction fonctionne pour IPv4 et IPv6. En fait, vous pouvez écrire du code qui fonctionne pour IPv4 et IPv6 comme dans le premier exemple ci-dessous. Disclaimer: Je suis le chef de projet de cette bibliothèque.
Version IP-Version Agnostique à l'aide d'un octet [] et / ou BigInteger: p> Utilisez INTS pour IPv4: P > 1
0:0:0:0:0:0:0:1
2130706433
127.0.0.1
1
0:0:0:0:0:0:0:1