3
我有一个二进制文件,并获取我已经使用“解压”函数的内容。解压函数没有给出类似的结果
我的脚本可以同时运行32位exe或64位exe。因此,我用下面的代码:
if ($ENV{PROCESSOR_ARCHITECTURE} eq 'x86')
{
@data = unpack("LL8", $binary);
}
else
{
@data = unpack("Q8", $binary);
}
print Dumper \@data;
但是,当我使用32位的Active Perl和64位活跃的perl编译器执行相同的,我得到不同的结果:
32位:
$ VAR1 = [ 129864071, 0, 47193587, 0, 16448777, 0, 41067198, 0,];
64位:
$ VAR1 = [ 129864071, 47193587, 16448777, 41067198, 129, 365173507, 25208052,]
造成这种差异的原因可能是什么?我怎样才能使他们相似,同时仍然使用32位无符号长和64位无符号四进制值?
得到了我在这里所犯的粗心的错误--- 我应该把它作为 @data = unpack(“(LL)8”,$ binary); 然后只有我使用32位被解释为64位。 – Kallol 2012-01-08 08:24:54
是的,你可以使用加括号的'(LL)8'规范。 – 2012-01-08 17:35:48