我正在寻找一种方法来反转字符数组中的字节。在将它们放置在正确的位置之前,我还需要反转正在交换的字节的各个位。例如,假设我有一个 char arr[1000],其 arr[0] = 00100011 和 arr[999] = 11010110,我想交换 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。这是正确的方法吗?有没有更好的方法来实现这一目标?任何帮助将不胜感激。