質問

私は数字の束を持っているのPerlスクリプトによって解析されているログファイル内の16進文字列として表され、私はPerlで、比較的経験の浅いんです。

16ビット符号付き整数として表される場合、

は、これらの数字のいくつかは、実際に負の数、すなわち0xFFFE == -2を締結しています。

缶誰か私にPerlでの文字列FFFEからこの数の署名表現を得るための標準的な方法を教え、またはその他のチュートリアルや他のリソースに私を指してください?

役に立ちましたか?

解決

あなたが進から10進数に変換するには進()の機能を利用することができますが、それは符号なしの値として入力を解釈します。

:それを補償するために、符号なしの数量として小数点値をパックし、署名したものとして、それを解凍し
my $num = unpack('s', pack('S', hex('FFFE')));

の 'と「S」テンプレートである符号付きおよび符号なしの16ビット量のために、夫々。他のテンプレートと使用方法の詳細については、 pack の機能のためのマニュアルを参照してください。

他のヒント

print unpack('s>', pack('H4', 'FFFE'));
-2
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top