OVH Cloud OVH Cloud

Conversion decimal hexadecimal

9 réponses
Avatar
bertrille
Je me demande s'il y a un moyen simple de convertir un fichier qui
contient des nombres en decimal en hexadecimal en utilisant les
commandes de terminal.

Merci!

9 réponses

Avatar
MacTotoche
Bertrille Ethrington wrote:
Je me demande s'il y a un moyen simple de convertir un fichier qui
contient des nombres en decimal en hexadecimal en utilisant les
commandes de terminal.
Hello,

Regarde hexdump et ses options.

--
Olivier
This space for sale.

Avatar
Jaypee
Le 9/08/03 9:57, dans 3f34a977$0$27014$, « MacTotoche »
a écrit :

Bertrille Ethrington wrote:
Je me demande s'il y a un moyen simple de convertir un fichier qui
contient des nombres en decimal en hexadecimal en utilisant les
commandes de terminal.
Hello,

Regarde hexdump et ses options.
L' outil de base pour çà est od (octal dump) qui fait aussi tout le reste

via ses options. Il peut par exemple cumuler un vidage ascii ET hexa ou
octal.
J-P


Avatar
bertrille
Jaypee wrote in message news:<BB5AA68A.24E9A%...
Le 9/08/03 9:57, dans 3f34a977$0$27014$, « MacTotoche »

Bertrille Ethrington wrote:
Je me demande s'il y a un moyen simple de convertir un fichier qui
contient des nombres en decimal en hexadecimal en utilisant les
commandes de terminal.
Hello,

Regarde hexdump et ses options.
L' outil de base pour çà est od (octal dump) qui fait aussi tout le reste

via ses options. Il peut par exemple cumuler un vidage ascii ET hexa ou
octal.
J-P


Merci!

Je regarde atentivement les man de hexdump et de od et je vois des
possibilités. Toutefois, bien que j'essais toutes les options, je ne
parviens pas a produire une liste de nombres hexadecinaux qui
correspondent un à un à des nombres decimaux (1 par ligne) dans un
fichier. Je peux vivre avec les numéros de lignes dans le fichier
résultant puisqu'il est simple d'enlever des colonnes. Est-ce que
printf serait une option? Ce n'est pas clair pour moi nous plus.



Avatar
Éric Lévénez
Le 9/08/03 21:26, dans ,
« Bertrille Ethrington » a écrit :

Je regarde atentivement les man de hexdump et de od et je vois des
possibilités. Toutefois, bien que j'essais toutes les options, je ne
parviens pas a produire une liste de nombres hexadecinaux qui
correspondent un à un à des nombres decimaux (1 par ligne) dans un
fichier. Je peux vivre avec les numéros de lignes dans le fichier
résultant puisqu'il est simple d'enlever des colonnes. Est-ce que
printf serait une option? Ce n'est pas clair pour moi nous plus.


awk '{ printf "%xn", $0 }' < fichier_in > fichier_out

Est-ce cela ce que tu cherches ? Sinon donne un exemple de ce que tu veux en
clair.

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.

Avatar
bertrille
Éric Lévénez wrote in message news:<BB5B1AA4.4FA13%...
Le 9/08/03 21:26, dans ,

Je regarde atentivement les man de hexdump et de od et je vois des
possibilités. Toutefois, bien que j'essais toutes les options, je ne
parviens pas a produire une liste de nombres hexadecinaux qui
correspondent un à un à des nombres decimaux (1 par ligne) dans un
fichier. Je peux vivre avec les numéros de lignes dans le fichier
résultant puisqu'il est simple d'enlever des colonnes. Est-ce que
printf serait une option? Ce n'est pas clair pour moi nous plus.


awk '{ printf "%xn", $0 }' < fichier_in > fichier_out

Est-ce cela ce que tu cherches ? Sinon donne un exemple de ce que tu veux en
clair.


Bien sur. J'ai un fichier qui contient les nombres décimaux suivant,
un par ligne:
2847664624
2799895826
1650591775
340226408 ...

Ce qu'il me faut c'est un fichier qui contient la conversion
hexadécimale ligne par ligne:
A9BBE9F0
A6E30512
14477168
E7117DAF ....


Avatar
lucsky
Bertrille Ethrington wrote:

Bien sur. J'ai un fichier qui contient les nombres décimaux suivant,
un par ligne:
2847664624
2799895826
1650591775
340226408 ...

Ce qu'il me faut c'est un fichier qui contient la conversion
hexadécimale ligne par ligne:
A9BBE9F0
A6E30512
14477168
E7117DAF ....


ruby -n -e 'printf "%Xn", $_' fichier_in > fichier_out

--
Luc Heinrich -

Avatar
Éric Lévénez
Le 10/08/03 3:42, dans ,
« Bertrille Ethrington » a écrit :

Éric Lévénez wrote in message
news:<BB5B1AA4.4FA13%...
Le 9/08/03 21:26, dans ,

Je regarde atentivement les man de hexdump et de od et je vois des
possibilités. Toutefois, bien que j'essais toutes les options, je ne
parviens pas a produire une liste de nombres hexadecinaux qui
correspondent un à un à des nombres decimaux (1 par ligne) dans un
fichier. Je peux vivre avec les numéros de lignes dans le fichier
résultant puisqu'il est simple d'enlever des colonnes. Est-ce que
printf serait une option? Ce n'est pas clair pour moi nous plus.


awk '{ printf "%xn", $0 }' < fichier_in > fichier_out

Est-ce cela ce que tu cherches ? Sinon donne un exemple de ce que tu veux en
clair.


Bien sur.


"Bien sûr ?" Et bien, non, pas bien sûr. La preuve c'est que l'on t'a
aiguillé sur une mauvaise piste en pensant que tu parlais de fichiers
binaires en entrée.

J'ai un fichier qui contient les nombres décimaux suivant,
un par ligne:
2847664624
2799895826
1650591775
340226408 ...

Ce qu'il me faut c'est un fichier qui contient la conversion
hexadécimale ligne par ligne:
A9BBE9F0
A6E30512
14477168
E7117DAF ....


Ok. Alors le "awk" n'est pas utilisable car il traite des entiers 32 bits
signés et que tu veux traiter des tailles plus grandes. Dans ce cas, on
passe aux programmes en multiprécisions comme bc :

(echo "obase" ; cat fichier_in ) | bc > fichier_out

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.



Avatar
bertrille
Éric Lévénez wrote in message news:<BB5BDE61.50A33%...
Le 10/08/03 3:42, dans ,

Éric Lévénez wrote in message
news:<BB5B1AA4.4FA13%...
Le 9/08/03 21:26, dans ,

Je regarde atentivement les man de hexdump et de od et je vois des
possibilités. Toutefois, bien que j'essais toutes les options, je ne
parviens pas a produire une liste de nombres hexadecinaux qui
correspondent un à un à des nombres decimaux (1 par ligne) dans un
fichier. Je peux vivre avec les numéros de lignes dans le fichier
résultant puisqu'il est simple d'enlever des colonnes. Est-ce que
printf serait une option? Ce n'est pas clair pour moi nous plus.


awk '{ printf "%xn", $0 }' < fichier_in > fichier_out

Est-ce cela ce que tu cherches ? Sinon donne un exemple de ce que tu veux en
clair.


Bien sur.


"Bien sûr ?" Et bien, non, pas bien sûr. La preuve c'est que l'on t'a
aiguillé sur une mauvaise piste en pensant que tu parlais de fichiers
binaires en entrée.

J'ai un fichier qui contient les nombres décimaux suivant,
un par ligne:
2847664624
2799895826
1650591775
340226408 ...

Ce qu'il me faut c'est un fichier qui contient la conversion
hexadécimale ligne par ligne:
A9BBE9F0
A6E30512
14477168
E7117DAF ....


Ok. Alors le "awk" n'est pas utilisable car il traite des entiers 32 bits
signés et que tu veux traiter des tailles plus grandes. Dans ce cas, on
passe aux programmes en multiprécisions comme bc :

(echo "obase" ; cat fichier_in ) | bc > fichier_out


Merci beaucoup! C'est exactement ce qu'il me fallait.

Par ailleurs, quand je diasit "Bien sûr" je voulait dire que je suis
prête à donner un example.

Je n'ai jamais utilisé de parenthèses ou de point-virgules. Connais-tu
une ressource qui pourrait me rendre plus instruite à ce sujet?




Avatar
Éric Lévénez
Le 10/08/03 14:59, dans ,
« Bertrille Ethrington » a écrit :

Je n'ai jamais utilisé de parenthèses ou de point-virgules. Connais-tu
une ressource qui pourrait me rendre plus instruite à ce sujet?


Les parenthèses et les accolades sont spécifiques de certains shells. Il
peut donc y avoir des différences. J'utilise un shell type sh (pas csh, que
personne n'utilise plus...). Pour avoir des infos sur les shells, on peut
utiliser soit "man sh" soit google

Voici quelques trucs sur sh :

Le point virgule sert à séparer des commandes pour en mettre plusieurs sur
la même ligne. Les commandes sont exécutées de gauche à droite, l'une après
l'autre :

truc ; machin ; bidule

Le & sert à lancer en tâche de fond une commande (le shell rend la main,
mais la commande est exécutée en tâche de fond). Le & sert aussi de
séparateur. Les commandes sont lancées de gauche à droite et tournent toutes
en même temps :

truc & machine & bidule &


Les parenthèses servent à regrouper des commandes qui sont exécutées dans un
sous shell, le shell courant n'est pas affecté :

(pwd ; cd /) ; pwd

Les accolades servent à regrouper des commandes qui sont exécutées dans le
shell courant :

{pwd ; cd /} ; pwd

--
Éric Lévénez -- <http://www.levenez.com>
Unix is not only an OS, it's a way of life.