2014-01-24 45 views
0

我想从二进制文件中提取日期和时间,并在Perl中将其转换为ASCII。 hex dump从Perl文件中提取二进制数据

如何将二进制数据转换为整数和ASCII字符?

我试过下面的代码,但它似乎只能打印出前两个字节,然后我只能看到下一个迭代为零。有时候,我确实得到了其他的值,但是好像我没有正确地进行转换并缺少一些信息。

while (($n = read FILE, $data, 4) != 0) { 
my $hex = sprintf('%04X', ord($data)) 

}

是否有某种转换为整数时必须发生的? 如何正确转换?

编辑:在十六进制转储我需要将04FF转换为一个整数。

回答

1

随着glebaty的帮助,我是能够解决的问题。这是我如何将4个字节转换为十进制值。

open FILE, "source.bin" or die $!; 
while ((my $n = read $FILE, my $data, 4) != 0) { 
    my $hex = unpack( 'H+', $data); 
    my $decimal = hex($hex); 
} 
close FILE; 
1

ASCII是一个7位的二进制整数,所以你需要从文件中读取1个字节,我想。 试试这个代码:

open my $FILE, '<', 'file';                                 
while ((my $n = read $FILE, my $data, 1) != 0) {                            
print chr(unpack('C', $data)). "\n";                             
} 
close $FILE; 
相关问题