文字配列のバイトを逆にする方法を探しています。また、スワップされるバイトの個々のビットを逆にしてから、正しい場所に配置する必要があります。たとえば、arr [0]=00100011およびarr[999]=11010110のchararr[1000]があるとし、arr[0]とarr[999]を交換し、さらにそれぞれのビットを逆にします。したがって、出力はarr [999] = 11000100(arr [0]の反転ビット)およびarr [0] = 01101011(arr [999]の反転ビット)になります。
バイト内でビット反転を行うためのコードがいくつかあります:
static char reverseByte(char val)
{
char result = 0;
int counter = 8;
while (counter-- < 0)
{
result <<= 1;
result |= (char)(val & 1);
val = (char)(val >> 1);
}
return result;
}
ただし、これは、バイトスワップを実行するために外部ループを実行してから、内部の各バイトに対して上記の小さなループを実行することを意味します。つまり、上記の場合は1000です。これは正しいアプローチですか?これを達成するためのより良い方法はありますか?どんな助けでも大歓迎です。