将C++代码移植到Python

2 投票
1 回答
1382 浏览
提问于 2025-04-16 13:32

我想把这段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 的缩进位置不对,这样会导致你的函数在处理完第一个字符后就返回了。

撰写回答