昨天做了字符串反转,想到以前做过位反转,就记一下。
比如一个字符为“10100110”(十六进制数据为0xA6),反转后就成为“01100101”(十六进制数据为0x65)
代码如下:
//位反转
void reverse(unsigned char *data)
{
unsigned char temp=0;//将反转的数据放在temp里
int i;
for(i=0;i<8;i++)
{
temp = temp <<1; //temp左移
temp = temp | (*data & 0x01);
*data = *data>>1; //data右移
}
*data = temp;
}
字符串发反转是以中间为界,相互交换数据,而位反转,在于移位。