OVH Cloud OVH Cloud

hex2text

2 réponses
Avatar
Paul Bert
Bonsoir,

J'ai une chaîne qui contient par exemple "414243440045464700". En fait,
chaque "paire" correspond à une valeur en hexa, dont je souhaite
récupérer le caractère correspondant, ce qui donnerait dans l'exemple
ci-dessus 2 chaînes de caractères :
- "ABCD\0"
- "EFG\0"

Comment le faire efficacement ?

Je me doute que les fonctions pack/unpack vont me servir, mais je ne
vois pas trop encore.

Merci.

Paul

2 réponses

Avatar
jl_morel
Dans l'article <3fafcdb9$0$23186$,
a dit...

J'ai une chaîne qui contient par exemple "414243440045464700". En fait,
chaque "paire" correspond à une valeur en hexa, dont je souhaite
récupérer le caractère correspondant, ce qui donnerait dans l'exemple
ci-dessus 2 chaînes de caractères :
- "ABCD"
- "EFG"

Comment le faire efficacement ?

Je me doute que les fonctions pack/unpack vont me servir, mais je ne
vois pas trop encore.



Bonne intuition. On peut faire :

#!/usr/bin/perl -w
use strict;

my $s = "414243440045464700";

my @chaines = unpack '(Z*)*', pack 'H*', $s;

$,="n";
print @chaines;

__END__

--
J-L.M.

Avatar
Stephane Chazelas
2003/11/10, 17:41(+00), Paul Bert:
J'ai une chaîne qui contient par exemple "414243440045464700". En fait,
chaque "paire" correspond à une valeur en hexa, dont je souhaite
récupérer le caractère correspondant, ce qui donnerait dans l'exemple
ci-dessus 2 chaînes de caractères :
- "ABCD"
- "EFG"
[...]


$ perl -le'print for unpack "(Z*)*",
pack "(H2)*",
unpack "(a2)*", "414243440045464700"'
ABCD
EFG

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]