2017-06-05 58 views

回答

3

正如您已經看到的,您可以使用hex()將十六進制字符串轉換爲數字值。

print hex $str; # displays "10" 

使用printf()用 「%x」 來格式化數字爲十六進制數

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

添加 '0X' 到printf()格式添加到輸出

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

使用「02x」獲得領先的零點

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

更新:如果要將結果存儲在變量中,請使用sprintf()而不是printf()

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

我想用a或0x0a設置變量我怎樣才能得到它? – Alex

+0

@Alex:看我的更新 –

0

您省略了賦值運算符。 試試這個: $ hex_num = hex($ str);

+0

但它會轉換爲DEC – Alex

+0

十六進制()正在轉換爲數字,我認爲perl保持整數爲4個字節或8個字節的二進制整數。打印到標準輸出時,您將該數字轉換爲小數。 – ulix

+0

正則表達式?在開始時刪除所有的零。怎麼樣 ? – Alex

相關問題