[gull] Transtypage en Perl
Frédéric Schütz
schutz at mathgen.ch
Wed Jun 24 09:02:50 CEST 2009
Faehndrich Philippe wrote:
> Y a-t-il en Perl un moyen direct d'interpréter une chaîne de zéros et de uns
> (par exemple "1000101101110") comme valeur numérique, représentable avec
> printf en décimal ou en hexa? ou faut-il écrire une routine pour cela?
>
> J'ai graillé un peu avec printf et pack, mais je ne parviens pas au résultat
> souhaité.
Tu peux la convertir en décimal avec unpack, et il sans doute plus
simple d'utiliser une sous-routine pour ça (routine copiée du Perl
Cookbook, à première vue pour un binaire sur 32 bits, mais adaptable).
printf peut ensuite convertir en hexadécimal si nécessaire.
#!/usr/bin/perl
use feature ':5.10';
sub bin2dec {
return unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
}
say bin2dec(1000101101110);
(avec en bonus une utilisation de la fonction "say" de Perl6, backportée
dans Perl 5.10 -- rien de spécial, c'est équivalent à "print" avec un
retour à la ligne automatique)
Frédéric
More information about the gull
mailing list