У меня есть двоичный файл и для получения содержимого я использовал функцию «распаковать».Функция распаковки, не дающая аналогичных результатов
Мой скрипт может работать как для 32-битного exe, так и для 64-битного exe. Поэтому я использовал следующий код:
if ($ENV{PROCESSOR_ARCHITECTURE} eq 'x86')
{
@data = unpack("LL8", $binary);
}
else
{
@data = unpack("Q8", $binary);
}
print Dumper \@data;
Но когда я выполнение те же с помощью 32-битного активного Perl и 64 бита Активных компиляторов Perl, я получаю разные результаты:
32bit:
$ 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
Да, вы могли бы использовать спецификацию 8 'в скобках (LL). –