Allant de 127.0.0.1 2130706433, et de retour à nouveau
En utilisant les bibliothèques de base de Java, ce qui est le moyen le plus rapide pour obtenir de l'pointillés représentation sous forme de chaîne d'une adresse IPV4-adresse ("127.0.0.1"
) à l'équivalent de la représentation entière (2130706433
).
Et, en conséquence, quel est le moyen le plus rapide pour inverser la dite opération continue du nombre entier 2130706433
à la représentation de chaîne"127.0.0.1"
?
Vous devez vous connecter pour publier un commentaire.
String en int:
Int string:
((long)packedBytes)&0xffffffff
Vous pouvez également utiliser le Google Goyave InetAddress Classe
J'ai modifié ma réponse originale à cette question. Dans le Soleil de la mise en œuvre de
InetAddress
, lehashCode
méthode produit l'entier de la représentation de l'adresse IPv4, mais que les commentateurs ont souligné à juste titre, ce n'est pas garanti par la JavaDoc. Par conséquent, j'ai décidé d'utiliser leByteBuffer
classe pour calculer la valeur de l'adresse IPv4 place.La sortie sera:
Dans le cas où vous avez besoin d'apprendre la longue main de mathématiques, vous pouvez utiliser Substr à arracher les octets.
Mutliply le premier octet signifiant la Classe (256*256*256) ou (2^24)
deuxième multiplié par (256*256) (2^16)
troisième multiplié par (256) (2^8)
quatrième multiplié par 1 ou (2^0)
127 * (2^24) + 0 *(2^16) + 0 * (2^8) + 1 * (2^0)
2130706432 + 0 + 0 + 1 = 2130706433
Je n'ai pas essayé wrt. la performance, mais de la façon la plus simple est probablement d'utiliser le NIO ByteBuffer.
par exemple
vous fera retourner un tableau d'octets représentant l'entier. Vous peut besoin de modifier l'ordre des octets.
À l'aide de l'adresse ip de bibliothèque Java c'est simple, une ligne de code pour chaque direction.
Avertissement: je suis le chef de projet de la bibliothèque.
De sortie:
D'une autre manière: