如何将长十六进制数存储在标量中并在perl中打印回来

时间:2016-09-15 04:52:48

标签: perl variables

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

我的打印回复为703480471217687226。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

这是预料之中的。你的问题是什么?如果您打开警告,您会注意到以下警告:

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

您可以使用bigint pragma将一个可以处理大数字的版本替换为十六进制函数。

use bigint qw/hex/;
  

hex

     

使用可以处理的版本覆盖内置的hex()方法   大整数。这会通过将其导出到当前来覆盖它   包。在Perl v5.10.0及更高版本下,这不是必需的   每当bigint时,hex()在当前范围内被词法覆盖   pragma很活跃。 - perldoc

答案 1 :(得分:1)

您可以使用printf打印出十六进制数字:

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

但请注意,这对于使用32位整数的perls来说是不可移植的。 也许你真的只想把它作为一个字符串存储起来?