我有以下C语言的大恩迪安。
int32_t num = 0x01234567;
我想把它转换为中间的小恩迪亚,就像这样。0x45670123
在C语言中,我如何使用位运算符来完成这个任务。
一个很简单的方法是
num
与AND运算符。例子:
uint32_t num = 0x01234567;
uint32_t output = 0;
uint32_t firstByte = num & 0xff000000; // firstByte is now 0x01000000
// Where do we want to have 0x01 in the output number?
// 0x45670123
// ^^ here
// Where is 0x01 currently?
// 0x01000000
// ^^ here
// So to go from 0x01000000 to 0x00000100 we need to right shift the byte by 16 (4 positions * 4 bits)
uint32_t adjByte = firstByte >> 16; // adjByte is now 0x0100
// OR with output
output |= adjByte;