2011-07-08 62 views
0

我想读取64位十六进制数字,并使用Perl与他们进行数学运算。Perl 64位十六进制函数

我试过以下,但它似乎并没有工作。

> perl -e 'use integer; printf("%x\n", hex("0xffffffffffff")<<2)' 
Integer overflow in hexadecimal number at -e line 1. 
fffffffc 
+0

它为我在64位CPU上,而不是32位CPU上。 – Flimzy

+1

始终启用警告,即使在oneliners – ysth

回答

3

在我的64位系统上正常工作。

尝试use bignum而不是use integer

+0

bignum可以防止错误,但在我的32位系统上输出不正确的值。 – Flimzy

+0

我认为我系统上的Perl版本没有64位支持。很高兴知道它应该工作。谢谢。 –

+0

@Flimzy:'使用bignum'在我的64位系统上输出正确的值。也许你的Perl中有一个错误?我实际上没有32位系统...... – Nemo

1

也许你的平台/操作系统不完全是64位的。尝试Math :: BigInt以避免任何问题。

1

而不是使用BIGNUM,我宁愿有选择地使用数学:: BigInt有:

perl -wle'use Math::BigInt; $number = Math::BigInt->new("0xffffffffffff"); $number += 67; print $number->as_hex()'