2013-05-29 148 views
0

這是一段代碼。我正在嘗試在binmode中將十六進制寫入文件。將十進制轉換爲十六進制並在perl中寫入binmode文件

#!/usr/bin/perl 
die "Usage: $0 infile outfile" unless scalar(@ARGV) > 1; 
open(my $out, '>', $ARGV[1]) or die "cannot open in file: $!"; 
binmode($out); 
$PrevlastByte = 116; 
my $PrevlastByte = pack 'H*', $PrevlastByte; 
print $out "$PrevlastByte"; 

$ PrevlastByte是116和它的等效十六進制是74.當我看到我的OUTFILE,我將有兩個字節的數據11和60。我只是想在OUTFILE即0x74 1個字節的數據,當我看到它在十六進制查看器。如何才能做到這一點。請幫忙。

回答

1

你不想要十六進制。十六進制是一個數字的字符串表示。你想要的字符116 又名字符74 。

它是利用獲得的任何如下:

chr(116) 
chr(0x74) 
pack('C', 116) 
pack('C', 0x74) 
"\x74" 
... 

順便說一句,你應該採取STDOUT的優勢。

#!/usr/bin/perl 
binmode STDOUT; 
my $PrevlastByte = 116; 
print pack 'C', $PrevlastByte; 
+0

完美!謝謝。 :-) –

相關問題