将C++代码移植到Python
我想把这段C++代码转换成Python v2:
static unsigned char asConvCode[3] = {0xFC, 0xCF, 0xAB};
void asConv(char* str, int size)
{
int i = 0;
for (i = 0; n< size; n++)
{
str[i] ^= asConvCode[n % 3];
}
}
我试着这样做:
def asConv(self, data):
asConvCode= [0xFC, 0xCF, 0xAB]
for i in range(len(data)):
data[i] ^= asConvCode[i % 3] # Error: Unsupported operand type(s) for ^=: ...
return data
如果能给我一点提示,我会很开心
1 个回答
2
在Python中,字符串里的字符其实就是长度为1的字符串,而不是整数。所以你得这样使用:
data[i] = chr(ord(data[i]) ^ asConvCode[i % 3])
另外,正如我在评论中提到的,你的 return data
的缩进位置不对,这样会导致你的函数在处理完第一个字符后就返回了。