11

Perl スクリプトによって解析されているログ ファイルに 16 進数の文字列として表された多数の数値があり、Perl の経験は比較的ありません。

これらの数値の一部は、実際には符号付きの負の数です。つまり0xFFFE == -2、16 ビットの符号付き整数として表される場合です。

Perlの文字列からこの数値の符号付き表現を取得する標準的な方法を教えてくださいFFFE。または、チュートリアルやその他のリソースを教えてください。

4

2 に答える 2

21

hex()関数を使用して、16進数から10進数に変換できますが、入力は符号なしの値として解釈されます。これを補うために、10進値を符号なしの数量としてパックし、符号付きの数量としてアンパックします。

my $num = unpack('s', pack('S', hex('FFFE')));

's'および'S'テンプレートは、それぞれ符号付きおよび符号なしの16ビット量用です。pack他のテンプレートおよび使用法情報については、関数のドキュメントを参照してください。

于 2010-01-21T18:41:47.467 に答える
1
print unpack('s>', pack('H4', 'FFFE'));
-2
于 2012-04-25T09:12:59.640 に答える