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
_______________________________________________
gull mailing list
gull@forum.linux-gull.ch
http://forum.linux-gull.ch/mailman/listinfo/gull