[Roma.pm] - perfunc
Emanuele Zeppieri
ema_zep at libero.it
Wed Feb 6 06:48:47 PST 2008
Aldo Calpini wrote:
> Emanuele Zeppieri wrote:
>> Sul piano della semplicità d'uso, forse la soluzione migliore è data dal
>> pragma bignum (il modulo bignum è probabilmente già incluso nella tua
>> distribuzione, per cui non devi neanche installarlo):
>>
>
> eh, ma questo funziona solo nel caso in cui il valore da convertire sia
> una costante programmata duramente[1] nel codice.
Questo è vero, ma c'è un trucco semplicissimo: basta sommare 0 (o
moltiplicare per 1) la tua variabile con valore alieno e il risultato
diventa automagicamente un oggetto Math::BigInt (perché dietro le quinte
interviene anche l'overloading degli operatori):
$dec = ($bin_from_outside + 0)->as_int; # et-voilà ;-)
(Sempre che si voglia proprio insistere con bignum anziché usare
direttamente Math::BigInt).
> supponendo di partire
> da una rappresentazione (stringa) del binario in una variabile, si
> potrebbe proporre lo sporco trucco:
>
> $dec = eval "0b$bin";
Soffre della limitazione sulla dimensione dei numeri (che bignum non ha)
ma è veramente bello! ;-)
Ciao,
Emanuele.
More information about the Roma
mailing list