#1 Le 18/11/2017, à 15:40
- Arbiel
[Résolu] Trouver la représentation hexadécimale d'un caractère
Bonjour à tous
Pour trouver la représentation hexadécimale d'un caractère sous la forme "xx[-yy[-zz]]" je n'ai rien trouvé de plus simple que de passer par hexdump et de décoder le résultat par sed, comme indiqué ci-dessous
remi@remi-Vostro-3550:~$ function hxdp { echo -n ${1:0:1} | hexdump -C | head -1 | sed -r "s/^00000000 (( [^ ]{2})+).*/\1/" | sed -r "s/^[[:space:]]*(.*)$/\1/" | sed -e "s/ /-/g" ; }
remi@remi-Vostro-3550:~$ hxdp a
61
remi@remi-Vostro-3550:~$ hxdp é
c3-a9
remi@remi-Vostro-3550:~$ hxdp ᾦ
e1-be-a6
remi@remi-Vostro-3550:~$
Quelqu'un aurait-il quelque chose de plus simple ?
Merci d'avance
Dernière modification par Arbiel (Le 18/11/2017, à 19:03)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#2 Le 18/11/2017, à 16:47
- bruno
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Bonjour,
Un exemple pris dans man hexdump (pas sûr que cela simplifie beaucoup;)):
$ echo a | hexdump -v -e '/1 "%02X "'; echo
61 0A
Sinon avec xxd :
$ echo é | xxd -p
c3a90a
ou avec od :
$ echo é | od -An -t x1
c3 a9 0a
Il doit y avoir d'autre méthodes.
Dernière modification par bruno (Le 18/11/2017, à 16:54)
#3 Le 18/11/2017, à 18:04
- Arbiel
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Bonsoir
Je te remercie. Je vais opter pour
remi@remi-Vostro-3550:~$ echo -n ᾧ | hexdump -v -e '/1 "%02x-"' | sed -r "s/(.+).$/\1/"; echo
e1-be-a7
remi@remi-Vostro-3550:~$
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#4 Le 18/11/2017, à 18:33
- Watael
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
salut,
$ printf '%x\n' "'a"
61
par contre :
$ printf '%x\n' "'ᾦ"
1fa6
$ printf '%x\n' "'é"
e9
?
Dernière modification par Watael (Le 18/11/2017, à 18:34)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 18/11/2017, à 18:47
- nam1962
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Tiens, c'est piquant comme topic :
~]$ echo -n "ᾦ" | xxd -p | gawk '{$1=$1}1' FPAT='.{2}' OFS=-
e1-be-a6
(inspiré par stackoverflow )
Moi qui rame toujours avec sed, je trouve ça plus lisible, si on voulait un retour xxx/yyy c'est fastoche (même si ça n'a plus de signification)
~]$ echo -n "ᾦ" | xxd -p | gawk '{$1=$1}1' FPAT='.{3}' OFS=/
e1b/ea6
Dernière modification par nam1962 (Le 18/11/2017, à 18:53)
[ Modéré ]
Hors ligne
#6 Le 18/11/2017, à 18:56
- Arbiel
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Bonsoir
@Watael
Apparemment, 1fa6 est le point de code Unicode de ᾦ dont le codage en utf-8 est e1-be-a6, d'après les informations sur les caractères grecs que j'ai extraites des pages du site du consortium Unicode, et que j'ai regroupées dans un fichier
remi@remi-Vostro-3550:~$ grep ᾦ /home/.ucg/Greek-coptic-extended.fr
:ᾦ:U1FA6:e1-be-a6:omega:<dead_iota> <dead_psili> <dead_tilde>:Lettre minuscule grecque oméga esprit doux circonflexe et iota souscrit:
remi@remi-Vostro-3550:~$
Il en est de même pour é
Lettre minuscule latine E accent aigu U+00E9
@nam1962
En effet, la formulation avec awk est plus lisible, mais je ne le connais pas du tout. Cependant, je vais l'utiliser comme tu l'as montré.
Je passe le sujet en Résolu.
Dernière modification par Arbiel (Le 18/11/2017, à 19:02)
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#7 Le 18/11/2017, à 18:59
- nam1962
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Là on peut aussi :
~]$ printf ᾦ | recode ..dump
UCS2 Mné Description
1FA6 lettre minuscule grecque omga esprit doux circonflexe et iota souscrit
Dernière modification par nam1962 (Le 18/11/2017, à 19:01)
[ Modéré ]
Hors ligne
#8 Le 18/11/2017, à 19:00
- pingouinux
Re : [Résolu] Trouver la représentation hexadécimale d'un caractère
Bonsoir,
$ printf '%x\n' "'ᾦ" 1fa6 $ printf '%x\n' "'é" e9
?
En fait, tu récupères le codage Unicode des caractères.
<U1FA6> /xe1/xbe/xa6 GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
<U00E9> /xc3/xa9 LATIN SMALL LETTER E WITH ACUTE
Je ne connais pas cette façon de faire : "'é"
Où peut-on trouver de la documentation sur cette façon de procéder ?
Hors ligne