3

0x41を出力して、 として表示できるようにしたいA

これは私がこれまでに試したことです:

my $out;
open $out, ">file.txt" or die $!;
binmode $out;
print $out 0x41;
close $out;

65結果のファイルの代わりに出力Aします。これは私が望むものではありません。

私もこの同様の質問を読みましたが、回答を転送しません。packショートすると、1 バイトではなく 2 バイトになります。

4

3 に答える 3

3

使用できますchr(0x41)

より大きな構造の場合は、次を使用できますpack

pack('c3', 0x41, 0x42, 0x43) # gives "ABC"

の疑いについてはpack、そのページを読んでください。非常に用途が広いです。'c'(その質問に見られるように) 1バイト's'をパックし、2バイトの単語をパックします。

于 2012-11-29T05:54:30.303 に答える
1

packには2つの引数が必要です。最初の引数は、パックする必要のあるデータの方法と数を説明します。

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|
于 2012-11-29T06:20:33.073 に答える
1

chr 関数を使用します。

print $out chr 0x41
于 2012-11-29T05:53:39.137 に答える