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

 C Discussion :

caster un int de 4 octets en 4 octets


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2010
    Messages : 25
    Par défaut caster un int de 4 octets en 4 octets
    Bonjour,

    J'ai 4 octets (une adresse ip) dans le type :
    unsigned long int s_addr;

    Je voudrais le caster en u_char de façon à pouvoir récupérer chaque octet.

    Comme faire ?

    Merci d'avance,

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    avec les masques et les décalages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned char val0 = s_addr & 0xff;
    unsigned char val1 = (s_addr >> 8) & 0xff;
    unsigned char val2 = (s_addr >> 16) & 0xff;
    unsigned char val3 = (s_addr >> 24) & 0xff;
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ou encore : u_char * octets = (u_char *)&s_addr;
    Les octets sont octets[0] à octets[3].

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Citation Envoyé par Melem Voir le message
    Ou encore : u_char * octets = (uchar *)s_addr;
    Les octets sont octets[0] à octets[3].
    Cela peut poser des problèmes à cause du boutisme.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2010
    Messages : 25
    Par défaut
    Oui j'ai rencontré ce problème de "boutisme" mais qu'est ce que c'est ?
    La méthode du & fonctionne bien par contre.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par dedibox26 Voir le message
    Oui j'ai rencontré ce problème de "boutisme" mais qu'est ce que c'est ?
    Le boutisme est dû aux différentes architectures de micro processeurs. Certains micro processeurs présentent les octets poid forts en tête, d'autres présentent les octets poid faibles en tête. Si l'on n'y fait pas attention, cela provoque un problème de portabilité courant entre des programmes qui discutent entres eux (au travers du réseau par exemple) avec des architectures différentes (Intel et Sparc par exemple).

    On parle de little endian ou big endian, regarde ici pour plus d'info : http://fr.wikipedia.org/wiki/Endianness

    Citation Envoyé par dedibox26 Voir le message
    La méthode du & fonctionne bien par contre.
    Les 2 méthodes fonctionnent (au problème de boutisme près), peut être que celle de Melem est un peu plus rapide.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par dedibox26 Voir le message
    Oui j'ai rencontré ce problème de "boutisme" mais qu'est ce que c'est ?
    La méthode du & fonctionne bien par contre.
    éventuellement réolu avec les fonctions de la famille htonl ou ntohl ..

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2014, 08h34
  2. Caster un int en pointeur
    Par Bktero dans le forum C
    Réponses: 6
    Dernier message: 15/01/2013, 21h36
  3. caster un int en String
    Par Bigoodheart dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/10/2010, 15h53
  4. caster un int en char sur taille fixe
    Par devdebutantajax dans le forum Windows
    Réponses: 14
    Dernier message: 01/11/2008, 14h24
  5. Caster en int le contenu d'un vector
    Par MinsK dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2007, 16h59

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