相关疑难解决方法(0)

如何在Perl中进行64位运算?

我是一个perl新手,

我可以在Perl中简单地使用64位算术吗?

例如

$operand1 = 0xFFFFFFFFFFFF;   # 48 bit value
$operand2 = 0xFFFFFFFFFFFF;   # 48 bit value

$Result = $operand1 * $operand2;
Run Code Online (Sandbox Code Playgroud)
  • 我基本上是在寻找perl中int64_t的替代品.
  • 有没有办法提及,如果变量是签名还是未签名?

perl 64-bit signed

10
推荐指数
3
解决办法
1万
查看次数

我怎样才能在Perl中使用大字符?

在Windows 32位平台上,我必须阅读一些数字,这是意料之外的,可以有99,999,999,999的值,但不多.尝试sprintf("%011d", $myNum)输出溢出:-2147483648.

我无法使用BigInt模块,因为在这种情况下我应该深入更改代码.我无法将格式管理为字符串sprintf("%011s", $numero),因为减号处理不正确.

我该怎么办呢?打包/打包可以提供一些帮助吗?

perl printf bignum

3
推荐指数
1
解决办法
6261
查看次数

如何在Perl中求和大十六进制值?

我正在迭代一组32位十六进制字符串("DEADBEEF","12345678"等),我试图将它们加在一起形成一个32位校验和.假设变量$temp在下面的示例中加载了一些十六进制字符串.

my $temp;
my $checksum;

for (...)
{
    #assume $temp is loaded with a new hex string here
    my $tempNum = hex ($temp);
    $checksum += $tempNum;
    $checksum &= 0xFFFFFFFF;
    print printf("checksum: %08X",$checksum);
}
Run Code Online (Sandbox Code Playgroud)

前几个值是"7800798C","44444444"和"44444444".输出是:

校验和:7800798C
校验和:BC44BDD0
校验和:FFFFFFFF
校验和:FFFFFFFF

等等..

你可以看到前两个总结是正确的,然后它似乎饱和.我错过了关于Perl变量大小限制的内容吗?

编辑:这是脚本的实际输出(字符串是十六进制字符串,值是该字符串的十进制转换,校验和是结果输出):

string: 7800798C, value: 2013297036, checksum 7800798C
string: 44444444, value: 1145324612, checksum BC44BDD0
string: 44444444, value: 1145324612, checksum FFFFFFFF
string: 44444444, value: 1145324612, checksum FFFFFFFF
string: 78007980, value: 2013297024, checksum FFFFFFFF
string: 44444444, value: 1145324612, checksum FFFFFFFF

perl hex checksum

2
推荐指数
2
解决办法
1万
查看次数

标签 统计

perl ×3

64-bit ×1

bignum ×1

checksum ×1

hex ×1

printf ×1

signed ×1