Perl 64位十六进制函数

Perl 64位十六进制函数,perl,Perl,我想读入64位十六进制数字,并使用Perl对它们进行计算 我尝试了以下方法,但似乎不起作用 > perl -e 'use integer; printf("%x\n", hex("0xffffffffffff")<<2)' Integer overflow in hexadecimal number at -e line 1. fffffffc >perl-e'使用整数;printf(“%x\n”,十六进制(“0xffffffffffff”)在我的64位系统上运行良好 尝试使

我想读入64位十六进制数字,并使用Perl对它们进行计算

我尝试了以下方法,但似乎不起作用

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

>perl-e'使用整数;printf(“%x\n”,十六进制(“0xffffffffffff”)在我的64位系统上运行良好


尝试
使用bignum
而不是
使用integer

在我的64位系统上运行良好


尝试
使用bignum
而不是
使用integer

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

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

我宁愿选择使用bignum使用Math::BigInt:

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

我宁愿有选择地使用Math::BigInt,而不是使用bignum:

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

它适用于64位CPU,但不适用于32位CPU。始终启用警告,即使在OneLiner上也适用于64位CPU,但不适用于32位CPU。始终启用警告,即使在OneLinerBignum上也可以防止错误,但在32位系统上输出不正确的值。我认为我系统上的Perl版本不支持64位。很好知道它应该能工作。谢谢。@Flimzy:
使用bignum
在我的64位系统上输出正确的值。也许你的Perl中有一个错误?我实际上已经没有32位系统了……它在我的64位系统上也做了正确的事情-
使用integer
。但是在我的32位系统上,bignum不再出错,但它确实是产生错误的输出。@Flimzy:我就是这么说的。如果
use bignum
给出了错误的答案,那听起来像是Perl中的错误。如果它是当前的Perl,则可能值得报告…”错误答案“是一种非常糟糕的故障模式。bignum可以防止错误,但在我的32位系统上输出了不正确的值。我认为我的系统上的Perl版本没有64位支持。很高兴知道它应该可以工作。谢谢。@Flimzy:
使用bignum
在我的64位系统上输出正确的值。也许Perl中有错误?我不知道我不再有32位系统了……它在我的64位系统上也做了正确的事情,
使用integer
。但是在我的32位系统上,bignum不再出错,而是产生了错误的输出。@Flimzy:我就是这么说的。如果
使用bignum
给出了错误的答案,那听起来像是Perl中的错误。如果它是当前版本Perl,可能值得报告……”“错误答案”是一种非常糟糕的故障模式。