Распакуйте двоичный файл в текстовый файл - проблема, которая переворачивает значения - PullRequest
1 голос
/ 03 августа 2009

Как мне распаковать 4-х байтовый двоичный файл, хранить как в следующем примере, в массив или в текстовый файл?

входной файл:

00000000  00 00 00 00 00 00 00 01  00 00 00 01 00 00 00 00  |................|
00000001  00 00 00 01 00 00 00 01  00 00 00 01 00 00 00 01  |................|

желаемый выходной файл:

0,1,1,0,1,1,1,1

Сейчас я использую следующий код распаковки:

open(ERROR_ID_BIN, "<", "/error_id.bin") or die $!;
local $/;
my @err_values = unpack("V*", <ERROR_ID_BIN>); 
close(ERROR_ID_BIN);
print "\n\n\n\n\t@err_values\n\n\n";

И моя проблема в том, что он переворачивает значения и дает мне следующее:

0,16777216,16777216,0,16777216,16777216,16777216,16777216

Что мне делать?

Ответы [ 2 ]

4 голосов
/ 03 августа 2009

V - младший (младший байт первым); попробуйте N для старшего байта (сначала старший байт).

3 голосов
/ 03 августа 2009

Из пачки документации

N Длинный без знака (32-разрядный) в «сетевой» (big-endian) порядок.

V An беззнаковая короткая (32-битная) в "VAX" (little-endian) порядок.

Разве вы не хотите, чтобы 'N' исправил вашу конечность ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...