我想读取64位十六进制数字,并使用Perl进行数学运算。
我尝试了以下内容,但似乎无效。
> perl -e 'use integer; printf("%x\n", hex("0xffffffffffff")<<2)'
Integer overflow in hexadecimal number at -e line 1.
fffffffc
答案 0 :(得分:3)
在我的64位系统上正常工作。
尝试使用use bignum
代替use integer
。
答案 1 :(得分:1)
也许您的平台/操作系统的某些内容并非完全是64位的。尝试使用Math :: BigInt来避免任何麻烦。
答案 2 :(得分:1)
我宁愿选择性地使用Math :: BigInt:
,而不是使用bignumperl -wle'use Math::BigInt; $number = Math::BigInt->new("0xffffffffffff"); $number += 67; print $number->as_hex()'