将Decimal转换为Hex并在perl中以binmode写入文件

时间:2013-05-29 05:39:06

标签: perl hex decimal pack

这是一段代码。我试图在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中的1字节数据,即0x74,当我在hex viewer中看到它时。如何才能做到这一点。请帮忙。

1 个答案:

答案 0 :(得分:1)

你不想要十六进制。十六进制是数字的字符串表示。你想要角色116 10 又名角色74 16

使用以下任何一种方法获得:

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

顺便说一下,你应该利用STDOUT。

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