2

シリアルポートを読み取る小さな perl アプリを作成しました。小さなスクリプトを実行すると、データを受け取りますが、読み取り不能な記号で書かれています.. *I?? のように表示されます。しかし、もしそうなら

perl test.pl | hexdump

必要なデータを取得します。そして、16進データは私には理にかなっています。hexdumpを使用せずにperlを使用してこの出力を取得する方法を知っている人はいますか? 現在、print ($data) を使用してデータを印刷しています。

4

1 に答える 1

4

「生のヘックス」は何の意味もありません。あなたが持っているのは、テキスト表現に変換したいバイトの文字列です。これを行うには、unpackを使用できます。例えば、

my $bytes = read_from_serial_port();
my $hex = unpack 'h*', $bytes;

逆のエンディアンが必要な場合は、H代わりに使用します。h(いつもどれがどれか忘れる。)

于 2012-07-08T05:58:54.950 に答える