J'ai des valeurs hexadécimales dans le format de 4a0e94ca etc, et j'ai besoin de les convertir en IP, comment puis-je le faire en C#?C# convertir hexadécimal en ip
Répondre
Eh bien, prenez le format d'une adresse IP sous cette forme:
192.168.1.1
Pour obtenir en un seul numéro, vous prenez chaque partie, ou ensemble, tout en déplaçant vers la gauche, 8 bits.
long l = 192 | (168 << 8) | (1 << 16) | (1 << 24);
Ainsi, vous pouvez inverser ce processus pour votre numéro.
Comme si:
int b1 = (int) (l & 0xff);
int b2 = (int) ((l >> 8) & 0xff);
int b3 = (int) ((l >> 16) & 0xff);
int b4 = (int) ((l >> 24) & 0xff);
- Modifier
D'autres affiches ont probablement des moyens « nettoyant » de le faire en C#, utilisez donc probablement que dans le code de production, mais je pense que la façon dont je Avoir posté est une bonne façon d'apprendre le format des adresses IP.
+1 - Je crois que le calcul au niveau du bit est probablement la partie la plus importante de la conversion d'entiers en IP (et vice versa), même si votre langage le fait pour vous. –
@Matthew: Bien que je sois d'accord sachant que les mathématiques bitwise sont utiles, la plupart des langages dérivés de C ont la fonction inet_ntop et inet_pton dans ce but précis. – Powerlord
@R. Bemrose: Bien sûr, mais je pense que c'est bon de savoir comment ces fonctions * fonctionnent *. Chacun à son tour, certaines personnes ne sont pas aussi enthousiastes que moi à propos de ce qui se passe aux niveaux inférieurs :) –
Vérifier C# convert integer to hex and back again
var ip = String.Format("{0}.{1}.{2}.{3}",
int.Parse(hexValue.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(4, 2), System.Globalization.NumberStyles.HexNumber),
int.Parse(hexValue.Substring(6, 2), System.Globalization.NumberStyles.HexNumber));
C'est une façon assez décente, mais peut-être pas la plus rapide. Encore, +1. –
Si les valeurs représentent IPv4 vous adresse pouvez utiliser la méthode long.Parse
et passer le résultat à la IPAddress constructor:
var ip = new IPAddress(long.Parse("4a0e94ca", NumberStyles.AllowHexSpecifier));
Si elles représentent IPv6 vous les adresses doivent convert the hex value to a byte array et utilisez this IPAddress constructor overload pour construire l'adresse IP.
Aussi très bien. +1 –
Plus propre que ma méthode :) –
On dirait que la meilleure façon de moi –
- 1. Comment convertir des nombres entre hexadécimal et décimal en C#?
- 2. Comment convertir un double en hexadécimal?
- 3. Convertir un codepoint unicode en hexadécimal UTF8 en python
- 4. Comment convertir les caractères C# à leur représentation code hexadécimal
- 5. Nombre hexadécimal généré de manière aléatoire en C#
- 6. Convertir un seul caractère hexadécimal à sa valeur d'octet en java
- 7. Comment convertir la représentation décimale d'une adresse IP en binaire?
- 8. stockage entier - Hexadécimal/Octal
- 9. DateTime format hexadécimal
- 10. Comment changer une adresse IP en C++?
- 11. Déterminer l'adresse IP d'une imprimante en C#
- 12. Comment puis-je convertir un nombre décimal en hexadécimal dans VIM?
- 13. Conversion de bits de chaîne en octets ou hexadécimal
- 14. Conversion de nombre entier de lisp en hexadécimal
- 15. Convertir IntPtr en int * en C#?
- 16. Console.WriteLine comme hexadécimal
- 17. Comment convertir un hex en décimal en utilisant VB.NET?
- 18. Comment analyser long négatif en hexadécimal en Java
- 19. Obtenir l'adresse IP-
- 20. Convertir un extrait de C# en vbscript
- 21. Convertir la bibliothèque C# en projet MSTest
- 22. convertir la chaîne en char c
- 23. .NET/C# - Convertir char [] en chaîne
- 24. Convertir une chaîne en code C++
- 25. Comment convertir chaîne à LPWSTR en C++
- 26. C#: Comment convertir long en ulong
- 27. convertir l'extrait de code en C#
- 28. Comment convertir une chaîne en OctetString (C#)?
- 29. C# convertir un tableau d'objets en datatable
- 30. Création d'un nombre hexadécimal dans SQL
Dup - http://stackoverflow.com/questions/1139957/c-convert-int-to-hex-and-back-again – johnc
Désolé tireur d'élite, je vois que vous êtes nouveau ici. Veuillez rechercher des questions avant d'envoyer un doublon. Le lien vers la réponse que vous cherchez est au-dessus de – johnc
Que ce soit un doublon dépend de la façon dont vous définissez une adresse IP, et ce que la sortie est (je suppose qu'il doit être converti en une chaîne). –