2017-06-05 186 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

相关问题