将二进制文件解压缩到文本文件 - 翻转值的问题

时间:2009-08-03 10:17:02

标签: perl

如何解压缩4byte二进制文件,存储如下例所示, 数组或TEXT文件?

输入文件:

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 个答案:

答案 0 :(得分:4)

V是little-endian(最低有效字节优先);尝试N为big-endian(最重要的字节优先)。

答案 1 :(得分:3)

来自pack文档

  

N无符号长(32位)in   “网络”(big-endian)订单。

     

V An   “VAX”中的无符号短(32位)   (小端)订单。

你不想让'N'纠正你的结束吗?