IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Little endian et ASCII


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut Little endian et ASCII
    Bonsoir à tous,

    J'ai fabriqué de toute pièce un client IRC qui fonctionne à poil et qui me sert de bot. Par curiosité de voir comment les choses fonctionnent je me demandais comment les transferts (X)DCC de fichiers se font.

    J'ai trouvé des informations là: http://mathieu-lemoine.developpez.co...riels/irc/dcc/. Ca m'aide pas mal sauf que je coinçe sur cette phrase:

    À noter : pour adresse [...] il vous faut utiliser l'encodage little endian avant de convertir le nombre en sa représentation ASCII (c'est à dire : les octets de poids faibles en premier). Si ça n'a pas vraiment d'importance pour le numéro de port et la taille qui sont utilisés en tant que nombres, l'adresse IP, elle, doit être inversée avant d'être tansformée en chiffres ASCII.
    En effet lorsque je reçois ma demande en CTCP j'obtient un entier de 10 de longueurs qui ne ressemble vraiment pas à une adresse IP.
    Alors, utiliser l'encodage little endian j'ai pensé à struct.unpack(fmt, string) mais je ne vois pas comment l'utiliser. Surtout qu'ensuite il faut convertir en "sa représentation" ASCII.

    Voici un exemple à convertir: 1426176843
    Je remercie infiniment tout ceux qui m'aideront.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Par défaut
    Le nombre de 10 chiffres est la representation des octets de l'adresse IP mis bout a bout et presenté comme un nombre: si l'adresse ip est ip1.ip2.ip3.ip4, le nombre s'écrira (dernier octet de poids fort):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    N=ip4*256**3+ ip3*256**2 + ip2*256+ip1
    Inversement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    N=1426176843
    ip=[]
    for i in range(4):
       N,m=divmod(N,256)
       ip.append(m)
    print ".".join(str(i) for i in ip)
    Ce qui nous fait 75.187.1.85 (si je ne me suis pas trompé!)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2004
    Messages : 152
    Par défaut
    Je te remercie beaucoup Fructidor, je vais regarder ça de plus près dès que j'ai le temps. je vous tient au courrant.

    À bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/10/2008, 19h26
  2. Little endian - Big endian
    Par julinho99 dans le forum Ada
    Réponses: 4
    Dernier message: 10/04/2008, 11h13
  3. big and little endian!!
    Par moon93 dans le forum C
    Réponses: 17
    Dernier message: 31/05/2006, 14h38
  4. Big endian et Little endian?
    Par moon93 dans le forum C
    Réponses: 4
    Dernier message: 07/05/2006, 22h48
  5. [6809] Documentation opcodes ? Big ou little endian ?
    Par krhamidou dans le forum Autres architectures
    Réponses: 2
    Dernier message: 21/01/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo