我有下面的Perl代码,需要用Python重写:
$varTmp = join( '', pack( "H*", $value ) );
$result = $varTmp ^ $key;
$result =~ s/\x00//g;
我想到的是:
result = (value.decode('hex') ^ key).replace('\x00', '')
现在,我以错误告终:
TypeError: unsupported operand type(s) for ^: 'str' and 'str'
有人能帮我把它做好吗
如果我正确理解了这个问题,$value是一个十六进制数字字符串,比如“303132”,它被转换成由十六进制数字对表示的字符串(“303132”->;“012”),然后与另一个字符串,$key异或
对于Python 2,您需要一种稍微不同的方法:
对于Python 3,其中
str.decode
不存在,必须使用bytes.fromhex
:请注意,在第一个片段中
key
和value.decode('hex')
的结果是字符串,因此i和j是字符,需要使用ord
转换为数字;在第二种情况下,没有这种需要-key
和bytes.fromhex(value)
属于bytes
类型,因此i和j已经是整数了相关问题 更多 >
编程相关推荐