Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
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 19/04/2011, 12h21   #1
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Par défaut Hex To ASCII

Bonjour,

je suis sous UNIX AIX et je cherche une commande pour convertir une chaine hexadécimalle en ASCII.

J'ai le package od installé mais pas dumphex ou xxd.

Savez vous comment procéder ?

Exemple :
hex = "414243"

Je voudrais que cela me convertisse cette chaine en "ABC".

Je vous remercie d'avance !
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 14h21   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

Code :
1
2
3
4
5
hex="414243" x=0
while (( x < ${#hex} ))
do /usr/bin/printf "\x${hex:$x:2}"; x=$((x+2))
done; echo
ABC
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/04/2011, 14h50   #3
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par N_BaH Voir le message
Bonjour,

Code :
1
2
3
4
5
hex="414243" x=0
while (( x < ${#hex} ))
do /usr/bin/printf "\x${hex:$x:2}"; x=$((x+2))
done; echo
ABC
...
?
Merci pour la réponse !
je suis sous ksh et j'ai une erreur lors de l'exécution de ce script :
ksh: "\x${hex:$x:2}": bad substitution
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/04/2011, 15h21   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
3
$ hex="414243"
$ printf "$(echo $hex | sed 's/../\\x&/g')\n"
ABC
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/04/2011, 15h27   #5
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
1
2
3
$ hex="414243"
$ printf "$(echo $hex | sed 's/../\\x&/g')\n"
ABC
Là je n'ai plus d'erreur mais cela me retourne cela :
\x41\x42\x43
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h39   #6
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Citation:
ksh: "\x${hex:$x:2}": bad substitution
ah, oui ? En effet, ce n'est pas portable
désolé.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h42   #7
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par drvercetti Voir le message
Là je n'ai plus d'erreur mais cela me retourne cela :
\x41\x42\x43
T'aurais pas oublié le "f" de "printf" au moins ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h42   #8
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par N_BaH Voir le message
ah, oui ? En effet, ce n'est pas portable
désolé.
Mais c'est pas grave, tout réponse me fait progresser vers la solution!
Merci à toi !
As tu d'autres suggestion ?
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h44   #9
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par zipe31 Voir le message
T'aurais pas oublié le "f" de "printf" au moins ?
Non j'ai même pas fait cette boulette... étrange!

Code :
1
2
3
4
>hex="414243"
>printf "$(echo $hex | sed 's/../\\x&/g')\n"
\x41\x42\x43
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h47   #10
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Est-ce que :
renvoie bien :
?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 15h48   #11
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par zipe31 Voir le message
Est-ce que :
renvoie bien :
?
nop... cela renvoie :

Code :
1
2
3
>printf "\x41\x42\x43"
\x41\x42\x43
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 16h06   #12
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Pourtant en cherchant sur le net (chez IBM pour un AIX V6) c'est sensé marcher

Quelle version d'AIX ?

Que te dit ton man ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 16h28   #13
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par zipe31 Voir le message
Pourtant en cherchant sur le net (chez IBM pour un AIX V6) c'est sensé marcher

Quelle version d'AIX ?

Que te dit ton man ?
Voilà ma version d'AIX ==>
Plus précisément c'est AIX 5L Version 5.3 T.

Le man de printf ne parle pas de la conversion d'hexa en ascii malheureusement...
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 11h43   #14
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Je vous remercie de l'aide que vous avez pu m'apporter.
Mais nous n'avons toujours pas trouvé la réponse !

Quelqu'un d'autre a une idée à me proposer svp ?
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/04/2011, 14h30   #15
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
Citation:
Envoyé par drvercetti Voir le message
Quelqu'un d'autre a une idée à me proposer svp ?
Oui, voilà quelque chose qui devrait le faire:

Code :
1
2
3
4
5
6
7
hex="414243"
for i in $(awk -v len=$(expr "$hex" : '.*') 'BEGIN {for(i=1;i<len;i=i+2) print i;}')
do
  awk -v d=$(printf "ibase=16\n%s\n" $(echo $hex|cut -c$i-$(expr $i + 1)) | bc) 'BEGIN {printf("%c",d);}'
done
echo
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/04/2011, 15h55   #16
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Citation:
Envoyé par jlliagre Voir le message
Oui, voilà quelque chose qui devrait le faire:

Code :
1
2
3
4
5
6
7
hex="414243"
for i in $(awk -v len=$(expr "$hex" : '.*') 'BEGIN {for(i=1;i<len;i=i+2) print i;}')
do
  awk -v d=$(printf "ibase=16\n%d\n" $(echo $hex|cut -c$i-$(expr $i + 1)) | bc) 'BEGIN {printf("%c",d);}'
done
echo
Trop fort ça marche ! Merci beaucoup !!! T'es une star du shell toi ...
Par contre je comprends rien au code...
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 16h39   #17
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Pas tout à fait résolu, car avec une chaine héxa qui comporte des caractères, ça plante :

Code :
1
2
3
4
5
6
>for i in $(awk -v len=$(expr "$hex" : '.*') 'BEGIN {for(i=1;i<len;i=i+2) print i;}')
> do
> awk -v d=$(printf "ibase=16\n%d\n" $(echo $hex|cut -c$i-$(expr $i + 1)) | bc) 'BEGIN {printf("%c",d);}'
> done
printf: A0 expected numeric value
> echo
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/04/2011, 18h03   #18
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
C'est corrigé. (%s au lieu de %d).

Je te laisse la nuit pour comprendre le code ...
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 18h09   #19
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
Au moins toute la nuit !!!
Merci !!
drvercetti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 12h44   #20
Nouveau Membre du Club
 
Homme
Inscription : février 2009
Messages : 30
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2009
Messages : 30
Points : 27
Points : 27
J'ai juste un problème sur le caractère : "00"

Code :
1
2
3
4
5
6
7
>line="00"
>for i in $(awk -v len=$(expr "$line" : '.*') 'BEGIN {for(i=1;i<len;i=i+2) print i;}')
> do
>   awk -v d=$(printf "ibase=16\n%s\n" $(echo $line|cut -c$i-$(expr $i + 1)) | bc) 'BEGIN {printf("%c",d);}'
> done >temp
/topaz/shell@frmhis34 >od -A n -t x temp
         30000000
Si je converti en ASCII et de nouveau en héxa, le "00" se transforme en "30"...

bizarre... je cherche
drvercetti 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 +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web