Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2161 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  [python]transformer une ip hex en decimal [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[python]transformer une ip hex en decimal [résolu]

n°1839716
macfennec
Zorro del Sáhara
Posté le 18-01-2009 à 18:26:42  profilanswer
 

Bonjour,
 
Débutant en python en particulier et en prog en général, vous allez peut être vous crevez les yeux apres avoir vu ce code  [:thesphinx]  
 je souhaite convertir une ip hexadécimal en ip décimal puis la réinjecter dans un fichier.
Pour ce faire, j'ai écris une définition qui permet de faire cela. Malheureusement, je n'arrive pas a introduire les . entre les différents nombres composant l'adresse ip, aussi je me demande si ce n'est pas ma fonction qui est en cause.
 

Code :
  1. ######### definition hex
  2. ip=[]
  3. def hex2dec(s):
  4.    """donne la valeur décimal d'une chaîne hexadécimal s"""
  5.    n=int(s,16)
  6.    ip.append(n)
  7. #########prog
  8. hexa='C0:A8:01:01'
  9. lhexa = hexa.split(':')
  10. c = len(lhexa)
  11. while x < c :
  12.    hex2dec(lhexa[x])
  13.    x= x+1
  14.    print ip[0],ip[1],ip[2],ip[3]


 
je récupère un résultat comme celui ci: 192 168 1 1
en fait, je voudrais 192.168.1.1 Et je ne sais pas vraiment comment faire. le mieux que j'ai réussi a obtenir est un 192 .168 .1 .1 Mon idée d'utiliser une liste n'est peut être pas la bonne. Bref, je pars dans tout les sens sans vraiment obtenir de résultat probant.
Merci de vos pistes.

Message cité 1 fois
Message édité par macfennec le 20-01-2009 à 11:14:01
mood
Publicité
Posté le 18-01-2009 à 18:26:42  profilanswer
 

n°1839720
masklinn
í dag viðrar vel til loftárása
Posté le 18-01-2009 à 18:33:56  profilanswer
 

Code :
  1. '.'.join(str(int(h, 16)) for h in hex_ip.split(":" ))


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1839722
e_esprit
Posté le 18-01-2009 à 18:36:59  profilanswer
 

macfennec a écrit :

Bonjour,

 

Débutant en python en particulier et en prog en général, vous allez peut être vous crevez les yeux apres avoir vu ce code  [:thesphinx]
 je souhaite convertir une ip hexadécimal en ip décimal puis la réinjecter dans un fichier.
Pour ce faire, j'ai écris une définition qui permet de faire cela. Malheureusement, je n'arrive pas a introduire les . entre les différents nombres composant l'adresse ip, aussi je me demande si ce n'est pas ma fonction qui est en cause.

 
Code :
  1. ######### definition hex
  2. ip=[]
  3. def hex2dec(s):
  4.    """donne la valeur décimal d'une chaîne hexadécimal s"""
  5.    n=int(s,16)
  6.    ip.append(n)
  7. #########prog
  8. hexa='C0:A8:01:01'
  9. lhexa = hexa.split(':')
  10. c = len(lhexa)
  11. while x < c :
  12.    hex2dec(lhexa[x])
  13.    x= x+1
  14.    print ip[0],ip[1],ip[2],ip[3]
 

je récupère un résultat comme celui ci: 192 168 1 1
en fait, je voudrais 192.168.1.1 Et je ne sais pas vraiment comment faire. le mieux que j'ai réussi a obtenir est un 192 .168 .1 .1 Mon idée d'utiliser une liste n'est peut être pas la bonne. Bref, je pars dans tout les sens sans vraiment obtenir de résultat probant.
Merci de vos pistes.


La solution "qui marche facile à comprendre, mais pas top classe" :

Code :
  1. print ip[0] + '.' + ip[1] + '.' + ip[2] + '.' +ip[3]
 

La solution "qui marche, classe, mais moins évidente" :

Code :
  1. print '.'.join(ip)
 

:jap:

Message cité 1 fois
Message édité par e_esprit le 18-01-2009 à 18:37:29

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1839724
macfennec
Zorro del Sáhara
Posté le 18-01-2009 à 18:38:29  profilanswer
 

Merci à vous deux. Je tournais autour de la solution depuis 1h, sans la voir.
Encore merci :)

n°1839729
masklinn
í dag viðrar vel til loftárása
Posté le 18-01-2009 à 18:43:04  profilanswer
 

e_esprit a écrit :


La solution "qui marche facile à comprendre, mais pas top classe" :

Code :
  1. print ip[0] + '.' + ip[1] + '.' + ip[2] + '.' +ip[3]


 
La solution "qui marche, classe, mais moins évidente" :

Code :
  1. print '.'.join(ip)


 
 :jap:


Tu peux pas join() sur une liste d'int, donc ton 2e truc ne va pas marcher (faut faire '.'.join(map(str, ip))) :o
 
Et t'façon faut jeter tout le reste du code :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1839731
macfennec
Zorro del Sáhara
Posté le 18-01-2009 à 18:48:16  profilanswer
 

Oui, dans mes pérégrinations, je m'étais bien aperçu d'un problème de typage sans trouver la façon de le résoudre :)


Message édité par macfennec le 18-01-2009 à 18:48:34
n°1839773
e_esprit
Posté le 18-01-2009 à 20:18:30  profilanswer
 

masklinn a écrit :


Tu peux pas join() sur une liste d'int, donc ton 2e truc ne va pas marcher (faut faire '.'.join(map(str, ip))) :o

 

Et t'façon faut jeter tout le reste du code :o


Il obtient des chaines avec son split, donc dans son code, c'est tout à fait fonctionnel [:cosmoschtroumpf]

 

Ah non, il fait un int() dans a fonction j'avais pas fais gaffe, au temps pour moi :o

Message cité 1 fois
Message édité par e_esprit le 18-01-2009 à 20:19:04

---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
n°1839776
masklinn
í dag viðrar vel til loftárása
Posté le 18-01-2009 à 20:24:54  profilanswer
 

e_esprit a écrit :


Il obtient des chaines avec son split, donc dans son code, c'est tout à fait fonctionnel [:cosmoschtroumpf]
 
Ah non, il fait un int() dans a fonction j'avais pas fais gaffe, au temps pour moi :o


[:hahaguy]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  [python]transformer une ip hex en decimal [résolu]

 

Sujets relatifs
[résolu] efficacité avec les containers STL[Résolu] Inclure les dll Qt dans l'executable.
[Resolu] Comment faire une zone cliquable de forme polygonale?[Résolu] Comment lister plusieurs contenus de dossiers sur une page ?
Transformer jpg en octet : System.Drawing.Bitmap => Byte[][RESOLU]Content-types et upload d'image - Librairie GD
HTTP_USER_AGENT ie vista (résolu)Python : liste de liste, exercice
[resolu] [ajax/mootools] problème Fx.Tween ? 
Plus de sujets relatifs à : [python]transformer une ip hex en decimal [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR