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

Linux Discussion :

hexedit ou comment mettre l'entier 369001 en binaire dans un fichier


Sujet :

Linux

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut hexedit ou comment mettre l'entier 369001 en binaire dans un fichier
    salut,

    je dois passer à qqch de gros, mais google ne m'aide pas bcp sur ce coup

    je souhaite mettre le nombre 369001 en binaire dans mon fichier.
    soit 5A169 en hexa

    je veux faire ca avec ubuntu en ligne de commande. il est rapidement apparu que je devais utiliser hexedit pour faire ca.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    00000000   05 A1 69                                            ..i
    00000010
    00000020
    00000030
    00000040
    00000050
    00000060
    00000070
    00000080
    00000090
    000000A0
    000000B0
    000000C0
    000000D0
    000000E0
    000000F0
    00000100
    00000110
    00000120
    00000130
    00000140
    00000150
    00000160
    ---  test.hex       --0x0/0x3--------------------------------------------------
    malheureusement l'essai ci-dessus me crache un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    truc@www:~/serrurejo$ od -x test.hex
    0000000 a105 0069
    0000003
    truc@www:~/serrurejo$ od -d test.hex
    0000000 41221   105
    0000003
    truc@www:~/serrurejo$
    clairement mes bouts d'octets sont inversés (ou alors je ne sais pas lire ce que me dit od)
    et du coup, ben qd on utilise od -d pour afficher la version décimale de 05 A1 69 et ben on arrive à qqch de completement différent

    on dirait que je n'écris pas les octets dans le bon ordre (une histoire de endian ?)

    qqn peut m'éclairer sur comment utiliser correctement hexedit et od ? j'en perds mon latin


  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 467
    Points
    19 467
    Par défaut
    Je ne comprend rien à ton message.
    Simplement :
    - que contient ton fichier
    - que doit être aficher
    ?

    A tout hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    bc <<<"obase=2; 369001"
    1011010000101101001
    bc <<<"obase=16; 369001"
    5A169
    bc <<<"ibase=2; 1011010000101101001"
    369001
    #ou
    echo $((2#1011010000101101001))
    369001
    bc <<<"ibase=16; 5A169"
    369001
    #ou
    echo $((16#5A169))
    369001
    ...
    ?

  3. #3
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    bon déjà merci pour les tips. je n'ai pas l'accès à la console sous la main mais je vais tester tt ca tres bientot

    Citation Envoyé par N_BaH Voir le message
    Je ne comprend rien à ton message.
    Simplement :
    - que contient ton fichier
    - que doit être aficher
    ?


    dans l'ordre

    que contient mon fichier ?

    pour le moment rien puisque je n'arrive pas à le créer correctement je crois.

    il doit contenir l'entier 369001, en binaire. pas la séquence de caractères "369001" (6 octets) mais bien le nombre 369001 qui devrait tenir sur 3 octets je pense.

    malheureusement 369001 en binaire ne peut etre converti en caractères ascii affichables. je comptais créer ce fichier en l'éditant avec un éditeur hexa mais je n'arrive pas à me servir efficacement de hexedit.

    que doit etre affiché ?
    c'est finalement moins interessant car le fichier ainsi créé me servira à un test unitaire. mais qd meme, j'aurais de tte facon besoin d'afficher le résultat du test unitaire qui sera au mm format je pense.
    je voudrais savoir afficher simplement le contenu du fichier (mais pas en texte puisque ca n'est pas affichable). d'où l'idée d'arriver à l'afficher à la console avec od

    je pensais qu'un od -x monfichier m'afficherait l'équivalent hexa 369001 cad 5A169.
    je pensais qu'un od -d monfichier m'afficherait 369001
    mais bon je galère un peu là.

    est-ce plus clair maintenant ?

  4. #4
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    j'ai été eu -- comme tant d'autres avant moi -- par nos amis les big & little endian

    en effet

    si le nombre 369001 est bien 0x5A169 en notation hexa

    lorsqu'on l'enregistre dans hexedit il faut saisir les octets A L'ENVERS pour qu'ils soient correctement convertis derrière par od
    il doit y avoir une feinte pour dire à od de lire le contenu du fichier en mode big ou little endian, mais je ne l'ai pas trouvé

    du coup

    dans hexedit on saisit 69 A1 05 (à l'envers donc)

    coté od ca donne

    en hexa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ od -t x1 code.clair
    0000000 69 a1 05
    0000003
    et en décimal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ od -t u4 code.clair
    0000000     369001
    0000003
    et hop hop revoilà notre petit 369001

    bref. si qqn a un tips pour faire en sorte que lorsque od calcule des entiers il "comprenne" la data en big endian au lieu de little endian, je suis preneur

  5. #5
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    pour info j'ai observé le meme comportement de od sur cygwin :

    $ od --version
    od (GNU coreutils) 7.0


    et sur un ubuntu 8.04 :
    $ od --version
    od (GNU coreutils) 6.10

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/04/2007, 11h17
  2. Réponses: 3
    Dernier message: 04/07/2006, 16h34
  3. comment mettre le resultat d'une select dans fich txt
    Par StyleXP dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2006, 15h07
  4. Réponses: 7
    Dernier message: 02/05/2006, 16h28
  5. Réponses: 4
    Dernier message: 14/09/2005, 17h23

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