昨天做了字符串反轉,想到以前做過位反轉,就記一下。
比如一個字符爲“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;
}
字符串發反轉是以中間爲界,相互交換數據,而位反轉,在於移位。