0

这是一段代码。我正在尝试在 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。当我看到我的输出文件时,我将有两个字节的数据 11 和 60。当我在十六进制查看器中看到它时,我只想要输出文件中的 1 个字节数据,即 0x74。如何才能做到这一点。请帮忙。

4

1 回答 1

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;
于 2013-05-29T05:57:28.813 回答