2014-01-24 40 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; 
相關問題