0

この C++ コードを Python に変換するのを手伝ってくれませんか: データを XOR しようとしています

C++ :

void Encrypt(void data, Dword size)
{
    if(size > 0)
        for(DWORD i = size - 1; i > 0; i--)
            ((LPBYTE)data)[i] ^= ((LPBYTE)data)[i - 1];
}
4

2 に答える 2

1
def Encrypt(data, size):
    for i in range(size-1, 0, -1):
        data[i] = data[i] ^ data[i-1]

これは完全にpythonicではありませんが。明示的なサイズ引数を削除して、len(data)を使用することをお勧めします。

于 2012-06-28T04:46:18.037 に答える
0

Pythonでこれを行うには、おそらく次のbytearrayクラスを使用する必要があります。

def encrypt(data):
    n = len(data)
    for i in range(n-1, 0, -1):
        data[i] ^= data[i-1]      # for this to work, data has to be mutable

f = open('somefile.bin', 'rb')
buf = bytearray(f.read())
f.close()

encrypt(buf)

Pythonの文字列は不変であるため、文字列オブジェクトを渡すことはできないというコメントに注意してください。bytearray一方、そうではありません。

于 2012-06-28T04:46:54.713 に答える