byte swap

我的梦境 提交于 2020-02-07 04:01:54

byte swap一个 32位数 0x12345678 --> 0x78563412
先是用了俩高低位mask 两两交换,不满意。
然后用了一个mask,每次取一个byte,移位异或ans。一共执行四次,还是不满意。
提示说用两步,能不能先交换 LSB 和 MSB,写了一下,但还是想不出怎么写。。。

正解:
x = (x & 0x0000FFFF) << 16 | (x & 0xFFFF0000) >> 16;
x = (x & 0x00FF00FF) << 8 | (x & 0xFF00FF00) >> 8;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!