【发布时间】:2022-01-05 13:10:05
【问题描述】:
我需要将此 perlscript 转换为 java。但是我看不懂perl。请问有人能帮帮我吗?
sub checksum16 ($) {
my @bytes = unpack("C*", $_[0]);
my $sum = 0;
foreach(@bytes) {
$sum += $_;
$sum %= 2**16;
}
return $sum;
}
什么是 $_ 和 $_[0] ?它没有定义,什么是 unpack("C*", ... for?
【问题讨论】:
-
该函数使用一个16位的计数器,将一些数据的字节值相加。
-
谢谢:它通过一个字节数组循环。但是要总结什么呢? $sum += $_ $_ 是干什么用的?
-
它将数组中包含的字节值相加。我不是 Perl 专家,但很容易猜出代码的作用。
-
快速搜索得到this page 关于Perl
foreach构造的信息。 -
如果你运行
perldoc perlvar,它解释了所有 Perl 的特殊变量。 $_ 是 Perl 的隐式变量,因此通常填充“当前正在处理的事物”,因此在这种情况下是来自 @bytes 在 foreach 循环的这次迭代中的值。