最近在做蓝牙与手机APP通信,发现传输过程中有字节顺序问题,便学习了一下大小端转换函数。
以下是做的记录:swap_u16,swap_u32,swap_u64
u16 swap_u16(u16 input)
{
return (u16)(((input << 8) & 0xff00) | ((input >> 8) & 0xff));
}
u32 swap_u32(u32 input)
{
u16 l16 = input & 0xFFFF;
u16 h16 = (input >> 16) & 0xFFFF;
return (((u32)swap_u16(l16) << 16) & 0xFFFF0000) | swap_u16(h16);
}
u64 swap_u64(u64 input)
{
u32 l32 = input & 0xFFFFFFFF;
u32 h32 = (input >> 32) & 0xFFFFFFFF;
return (((u64)swap_u32(l32) << 32) & 0xFFFFFFFF00000000) | swap_u32(h32);
}