从十六进制字符串转换a的方法?

时间:2013-10-01 10:41:47

标签: perl

我正在解析一个html文档,并且有一个变量var key = 0xa9例如,我确实使用了我的正则表达式,但是我得到的0xa9作为字符串存储在变量中,是否有任何演员函数或任何东西将其转换为数字?

编辑

我确信我没有很好地解释自己,这就是我一直在努力做的事情:

$t = $t . chr ( ord(substr($e, $i, 1)) ^ $var);但是$var = "0xa9"或其他什么,它是一个字符串,所以在上一个操作中我确实得到一个错误Argument "0xc2" isn't numeric in bitwise xor (^) at,这就是为什么我想要完全相同的值但不是作为字符串,为了工作,$ var需要像$var = 0xa9一样。

3 个答案:

答案 0 :(得分:4)

尝试

print hex '0xAf'; # prints '175'

来自perldoc

hex
Interprets EXPR as a hex string and returns the corresponding value. 
(To convert strings that might start with either 0 , 0x , or 0b, see oct.) 
If EXPR is omitted, uses $_ .

答案 1 :(得分:2)

请试试这个:

print hex $string

答案 2 :(得分:1)

尝试将0x0添加到$var。它应该将XOR运算中的第二个操作数转换为数值。

$t = $t . chr ( ord(substr($e, $i, 1)) ^ ($var + 0x0));