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 :

Bibliothèques en C/C++ pour codec little endian


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut Bibliothèques en C/C++ pour codec little endian
    Bonjour,

    existe t il des bibiliothèques C ou C++ pour encoder et decoder des flux binaire en "little endian"

    Merci par avance,

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par maarek Voir le message
    existe t il des bibiliothèques C ou C++ pour encoder et decoder des flux binaire en "little endian"
    Ca n'a pas beaucoup de sens. Peux-tu préciser le contexte (plateforme, application ...)

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    si ton but est de passé de little endian en big endian un flux binaire (ou vice versa), tu peux le faire toi meme en 5min si tu as quelques connaissances en programmation. Ce n'est rien d'autre que des inversions d'octets 2 par 2 :
    http://fr.wikipedia.org/wiki/Little_endian

    Codeusement,

    Oniric.

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par oniric Voir le message
    si ton but est de passé de little endian en big endian un flux binaire (ou vice versa), tu peux le faire toi meme en 5min si tu as quelques connaissances en programmation. Ce n'est rien d'autre que des inversions de bit 2 par 2 :
    http://fr.wikipedia.org/wiki/Little_endian

    Codeusement,

    Oniric.
    tu veux dire de byte sûrement?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    han ! tu as édité mon message en le quotant, j'ai jamais ecris ca .... d'ailleurs j'ai jamais posté ici ce matin !

    (merci pour la correction, fatigué le matin... j'ai bien sur edité mon message pour ne pas laisser cette vilaine erreur de ma part)

    Discretement,

    Oniric.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par oniric Voir le message
    si ton but est de passé de little endian en big endian un flux binaire (ou vice versa), tu peux le faire toi meme en 5min si tu as quelques connaissances en programmation. Ce n'est rien d'autre que des inversions d'octets 2 par 2 :
    http://fr.wikipedia.org/wiki/Little_endian

    Codeusement,

    Oniric.
    Je crains que cela ne soit toujours pas correct, l'endianness est une question de "byte order" et non de "octet order".
    Je pense que le mot que tu cherches est multiplet.

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    la prochaine fois je tournerai ma langue 7 fois ... longtemps que j'avais pas regardé ca, et en effet je me suis bien melangé les pinceaux ... j'ai relu le lien que j'ai donné et ce n'est en effet pas par octet

    Merci de la correction pour maarek et moi

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Je crains que cela ne soit toujours pas correct, l'endianness est une question de "byte order" et non de "octet order".
    Je pense que le mot que tu cherches est multiplet.
    Concernant le réseau, non. Il s'agit bien d'octets à traiter en C dans un tableau de unsigned char.

  9. #9
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Concernant le réseau, non. Il s'agit bien d'octets à traiter en C dans un tableau de unsigned char.
    Je n'ai pas vu qu'il était question de réseau.

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Je n'ai pas vu qu'il était question de réseau.
    en fait, c'est "flux binaire". Si il s'agit de flux logiques (système), c'est comme du réseau, L'unité de données est l'octet quelle que soit l'implémentation et la taille du byte.

    Si il s'agit de flux matériels (ports série synchrone 16-bit dans un DSP, par exemple), c'est autre chose.

    C'est pour ça que j'ai demandé des détails sur la plateforme et l'application.

    Tant que le P.O. n'a pas répondu, nons ne faisons que spéculer...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Bonsoir à tous,

    Désolé de ne pas avoir pu répondre plus tôt mais j'étais en déplacement.
    Alors voilà exactement mon sujet.
    J'ai à faire passer et à recevoir des données sur un réseau TCP IP.
    Ces données correspondent à des objets complexes qui peuvent toujours se ramener à des "data type" de base comme du signed integer (SInt8, Sint16, ...)
    ou du décimal 32 ou 64, mais également de l'ascii.
    L'unité d'encodage minimum est le Byte.

    Donc lorsque j'envoie l'information je dois encoder en binaire selon le principe little endian et lorsque je reçois je dois décoder pour revenir aux types primitifs.

    Je dois admettre que ma connaissance des API qui permettent l'encodage en binaire des types primitifs est assez réduit donc je suis ouvert à toute suggestion ou aide.

    Merci par avance.

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par maarek Voir le message
    Désolé de ne pas avoir pu répondre plus tôt mais j'étais en déplacement.
    Alors voilà exactement mon sujet.
    J'ai à faire passer et à recevoir des données sur un réseau TCP IP.
    Ces données correspondent à des objets complexes qui peuvent toujours se ramener à des "data type" de base comme du signed integer (SInt8, Sint16, ...)
    ou du décimal 32 ou 64, mais également de l'ascii.
    L'unité d'encodage minimum est le Byte.

    Donc lorsque j'envoie l'information je dois encoder en binaire selon le principe little endian et lorsque je reçois je dois décoder pour revenir aux types primitifs.

    Je dois admettre que ma connaissance des API qui permettent l'encodage en binaire des types primitifs est assez réduit donc je suis ouvert à toute suggestion ou aide.

    Merci par avance.
    Tu utilises simplement les fonctions de socket :

    Host -> Network 16-bit : htons()
    Host -> Network 32-bit : htonl()
    Network -> Host 16-bit : ntohs()
    Network -> Host 32-bit : ntohl()

    Pour le 64 bit, il y a peut être ?to?ll() dans les versions récentes des sockets...

    http://publib.boulder.ibm.com/infoce...rf2/htonll.htm

    par exemple ...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 39
    Par défaut
    Je vais creuser cette solution et voir si tous mes cas sont traités.

    Merci,

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/06/2006, 07h06
  2. big and little endian!!
    Par moon93 dans le forum C
    Réponses: 17
    Dernier message: 31/05/2006, 14h38
  3. Bibliothèque multi-plate-formes : accès codecs
    Par chris_wafer_2001 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 26/05/2006, 13h13
  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