2017-06-05 1 views
-2

で進数に文字列ヘクスに変換することができます私のコードはどのように私はperlの

$str="000000a0"; 
$hex_num hex "$str"; 

である私はかは0x0Aで変数を設定したい どのように私はそれを得ることができますか?正規表現ですか? 最初のすべてのゼロを削除してください

答えて

3

すでに見てきたように、hex()を使用して、16進数文字列を数値に変換することができます。

print hex $str; # displays "10" 
進数として、その番号をフォーマットする "X%"

で使用printf()

printf '%x', hex $str; # displays "a" 

追加 '0X' printf()フォーマットには、出力

printf '0x%x', hex $str; # displays "0xa" 

にそれを追加します"02x"を使用して先行ゼロを取得する

printf '0x%02x', hex $str; # displays "0x0a" 

更新:結果を変数に格納する場合は、printf()の代わりにsprintf()を使用します。

my $hex_num = sprintf '0x%02x', hex $str; 
+0

変数をaまたは0x0aに設定したいのですがどうすれば入手できますか? – Alex

+0

@Alex:私の更新を参照してください –

0

割り当て演算子が省略されました。 これを試してください: $ hex_num = hex($ str);

+0

しかし、それは12進数に変換されます – Alex

+0

hex()は数値に変換されています、私は4バイトまたは8バイトバイナリintとして整数を保持すると思います。 stdoutに出力するときは、その数値を10進数に変換しています。正規表現? – ulix

+0

?最初のすべてのゼロを削除します。どうやって ? – Alex