在 Go 中异或一个切片

rul*_*ing 5 algorithm go

所以我试图对每四个字节的内容进行异或随机,即 4 个字节。问题是,我想将 random 更改为 ans (这是异或的结果),然后继续。所以基本上随机变量第一次是一个固定的数字,但之后会改变,直到循环结束。我的代码似乎有正确的逻辑,但是,我不断收到(运算符^未在切片上定义)

random := 4 bytes
for j:=0;j<len(something);j+=4{
ans:=something[j:j+4] ^ random
random=ans
}
Run Code Online (Sandbox Code Playgroud)

我的猜测是,切片不允许异或,并且某些内容必须是切片,因为我将数组切片为多个字节。知道如何解决这个问题吗?

Cer*_*món 4

应用程序应对各个字节进行异或。像这样的东西:

var random [4]byte
for i, b := range something {
    random[i&3] ^= b  // xor b on element of random
}
Run Code Online (Sandbox Code Playgroud)

这一套

random[0] = random[0] ^ something[0] ^ something[4] ....
random[1] = random[1] ^ something[1] ^ something[5] ...
... and so on
Run Code Online (Sandbox Code Playgroud)