このメソッドの機能を理解しようとかなりの時間を費やした後、私はまだそれが何をするのか理解できませんでした. 私が理解しているように、stateAsBytes には "\xA1\X32\X89\XB2" のような 16 進文字列が含まれている必要が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);
}
}