我希望能够输出0x41
,并将其显示为A
.
这是我到目前为止所尝试的:
my $out;
open $out, ">file.txt" or die $!;
binmode $out;
print $out 0x41;
close $out;
它输出65
而不是A
在结果文件中。这不是我想要的。
我也读过这个类似的问题,但我不会把答案转移过来。pack
一个简短的结果是 2 个字节而不是 1 个字节。
使用 chr 函数:
print $out chr 0x41
pack 需要两个参数:第一个参数说明必须如何打包以及打包多少数据:
perl -e 'printf "|%s|\n",pack("c",0x41,0x42,0x44);'
|A|
perl -e 'printf "|%s|\n",pack("c3",0x41,0x42,0x44);'
|ABD|
perl -e 'my @bytes=(0x41,0x42,0x43,0x48..0x54);
printf "|%s|\n",pack("c".(1+$#bytes),@bytes);'
|ABCHIJKLMNOPQRST|
你甚至可以在第一部分混合格式:
perl -e 'printf "|%s|\n",pack("c3B8",0x41,0x42,0x44,"01000001");'
|ABDA|