字节反序
处理网络报文的时候,常常需要将MAC地址,ip地址取反。例:32位的一个值:0x4a567fd0 转序后0xd07f564a.
实现的方法很多,下面给出一种常用的。
1 #include <iostream>
2
3 #define BYTESWAP(data) \
4 ( ( (data)<<24) )| \
5 ( ( (data)&(0xff00) )<<8 )| \
6 ( ( (data)&(0x00ff0000) )>>8)| \
7 ( ( (data)>>24))
8
9 int main(void)
10 {
11 int mydata = 0x4a567fd0;
12 std::cout<<std::hex<<mydata<<std::endl;
13 mydata = BYTESWAP(mydata);
14
15 // 输出反序后的结果
16 std::cout<<mydata<<std::endl;
17 return 0;
18 }