问题:交换替代字节如下:交换整数中的交替字节
输入:uint8_t buf [4] = {0xab,0xcd,0xef,0xba};
输出:0xcdababef
我有这样做,下面的代码,但我想知道是否有什么更好的办法来缩短代码。
#include <stdint.h>
#define SWAP_16(buf) (((buf & 0xFF00) >> 8) | ((buf & 0x00FF) << 8))
int main()
{
unsigned int value;
int i, j=0;
uint8_t buf[4] = {0,4,0,0};
unsigned int mask = 0xFFFF;
unsigned int tmp_value;
unsigned int size = 4;
for (i = size - 1 ;i >= 0; i--) {
tmp_value |= (buf[j] << 8*i);
j++;
}
value = SWAP_16((tmp_value & (mask << 16)) >> 16) << 16 |
SWAP_16(tmp_value & mask);
return 0;
}
为什么使用'int'?只需交换数组中的字节.... – 4386427
'#define SWAPPED(b){b [1],b [0],b [3],b [2]}'...'uint8_t bswap [4] = SWAPPED(buf);'..? – txtechhelp
你的意思是'0xcdabbaef'作为预期的输出?如果不是,那么目前还不清楚你的规定是 –