2013-05-29 114 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

完美!谢谢。 :-) –

相关问题