byte swap
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;