/ / Ako ukladať dlhé šestnástkové číslo do skaláru a tlačiť späť do perl - perl, premenných

Ako uložiť dlhé hexadecimálne číslo do skalárnej a tlačiť späť v perl - perl, premenných

$hexnumber = 0x09C343C2E95ACABA;
print ("$hexnumber");

Dostávam tlačenú odpoveď ako 703480471217687226. Môže mi niekto pomôcť s riešením tohto problému.

odpovede:

1 pre odpoveď č. 1

To sa očakáva. Aká je vaša otázka? Ak zapnete varovania, všimnete si nasledujúce varovanie:

Hexadecimal number > 0xffffffff non-portable at test.pl line 4.

Môžete použiť bigint pragma, ktorá nahradí funkciu hex verziou, ktorá zvládne také veľké čísla.

use bigint qw/hex/;

hex

Prepísať vstavanú metódu hex () verziouktoré zvládnu veľké celé čísla. Toto má prednosť pred exportom do aktuálneho balíček. Podľa Perl v5.10.0 a vyšších to nie je tak potrebné, pretože hex () je v aktuálnom rozsahu lexikálne prepísaný vždy, keď je bigint pragma je aktívna. -perldoc


1 pre odpoveď č. 2

Čísla si môžete vytlačiť hexadecimálne pomocou printf:

printf "%X", $hexnumber;  # or %x for lower case a-f digits

ale všimnite si, že to nie je prenosné na perly, ktoré používajú 32-bitové celé čísla. Možno to naozaj chcete najskôr uložiť ako šnúrku?