求问下边这个宏定义有什么用途。。。。高分求解

wintree 2012-12-27 09:21:35
#define tdr_os_swap64(x) \
((((x) & (unsigned __int64)0xff00000000000000) >> 56) \
| (((x) & (unsigned __int64)0x00ff000000000000) >> 40) \
| (((x) & (unsigned __int64)0x0000ff0000000000) >> 24) \
| (((x) & (unsigned __int64)0x000000ff00000000) >> 8) \
| (((x) & (unsigned __int64)0x00000000ff000000) << 8) \
| (((x) & (unsigned __int64)0x0000000000ff0000) << 24) \
| (((x) & (unsigned __int64)0x000000000000ff00) << 40) \
| (((x) & (unsigned __int64)0x00000000000000ff) << 56))

#define tdr_os_swap32(x) \
((((x) & 0xff000000) >> 24) \
| (((x) & 0x00ff0000) >> 8) \
| (((x) & 0x0000ff00) << 8) \
| (((x) & 0x000000ff) << 24))

#define tdr_os_swap16(x) \
((((x) & 0xff00) >> 8) \
| (((x) & 0x00ff) << 8))
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BrightPi 2013-01-18
  • 打赏
  • 举报
回复
按字节逆转原来的变量x的存储。
闭着眼刷牙 2013-01-11
  • 打赏
  • 举报
回复
虽然看不懂但是好像很厉害的样子
图灵狗 2012-12-27
  • 打赏
  • 举报
回复
交换字节顺序,例如x=0x12345678交换顺序变成x=0x78563412。
derekrose 2012-12-27
  • 打赏
  • 举报
回复
看命名就知道啦是一个交换作用的宏,64 32 16什么的一看就是bit的单元,这三个宏形式是差不多的,所以看16那个就ok了,因为代码最少,你看懂了最后一个宏是什么意思就ok了,实在不行自己举个例子,然后上面两个同理
prajna 2012-12-27
  • 打赏
  • 举报
回复
大小端的字節序轉換用的

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧