У меня есть бинарный файл, и для получения содержимого я использовал функцию «распаковать».
Мой скрипт может работать как для 32-битного, так и для 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,
129
];
64 бит:
$ VAR1 = [
129864071,
47193587,
16448777,
41067198,
129,
365173507,
25208052,
152155982
]
В чем может быть причина этой разницы? Как я могу сделать их похожими, все еще используя 32-битные беззнаковые длинные и 64-битные беззнаковые четырехугольные значения?