处理网络报文的时候,常常需要将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 }
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 }