Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 07/02/2010, 21h30   #1
Membre habitué
 
Inscription : février 2004
Messages : 320
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 320
Points : 113
Points : 113
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 :
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 :
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

fourchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2010, 22h24   #2
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
Je ne comprend rien à ton message.
Simplement :
- que contient ton fichier
- que doit être aficher
?

A tout hasard :
Code :
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
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2010, 21h44   #3
Membre habitué
 
Inscription : février 2004
Messages : 320
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 320
Points : 113
Points : 113
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 ?
fourchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2010, 06h50   #4
Membre habitué
 
Inscription : février 2004
Messages : 320
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 320
Points : 113
Points : 113
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 :
1
2
3
$ od -t x1 code.clair
0000000 69 a1 05
0000003
et en décimal
Code :
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
fourchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2010, 06h52   #5
Membre habitué
 
Inscription : février 2004
Messages : 320
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 320
Points : 113
Points : 113
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
fourchette est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 15h55.


 
 
 
 
Partenaires

Hébergement Web