在花了很长时间试图理解这个方法的功能之后,我仍然不知道它有什么作用。据我了解,stateAsBytes 应该包含像“\xA1\X32\X89\XB2”这样的十六进制字符串,有什么作用stateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j)
?为什么它使用按位赋值?
void fromBytesToWords(unsigned long **stateAsWords, unsigned char *stateAsBytes)
{
for(int i=0; i<(1600/64); i++) {
stateAsWords[i%5][i/5] = 0;
for(int j=0; j<(64/8); j++)
stateAsWords[i%5][i/5] |= (unsigned long )(stateAsBytes[i*(64/8)+j]) << (8*j);
}
}