私は websocket サーバーを作成しており、マスクを解除する必要があるマスクされたデータを処理する必要があります。
マスクは unsigned char[4] で、データも unsigned char* バッファです。
私はバイトごとに XOR したくありません。一度に 4 バイトずつ XOR したいのです。
uint32_t * const end = reinterpret_cast<uint32_t *>(data_+length);
for(uint32_t *i = reinterpret_cast<uint32_t *>(data_); i != end; ++i) {
*i ^= mask_;
}
この状況で reinterpret_cast を使用すると何か問題がありますか?
別の方法は、明確ではなく、高速ではない次のコードです。
uint64_t j = 0;
uint8_t *end = data_+length;
for(uint8_t *i = data_; i != end; ++i,++j) {
*i ^= mask_[j % 4];
}
私は、C++ 11 の機能に依存するものを含め、代替案に耳を傾けています。