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

Répondre à