我有一个32位的变量currentposition,我想把它分成48位字符。在C语言中,我如何才能最有效地做到这一点?我正在使用一个8位MCU,8051架构。

unsigned long CurrentPosition = 7654321;
unsigned char CP1 = 0;
unsigned char CP2 = 0;
unsigned char CP3 = 0;
unsigned char CP4 = 0;
// What do I do next?

我应该用一个指针引用currentposition的起始地址,然后将该地址加上8、2、4次吗?
是小恩迪安。
我也希望当前位置保持不变。

最佳答案

    CP1 = (CurrentPosition & 0xff000000UL) >> 24;
    CP2 = (CurrentPosition & 0x00ff0000UL) >> 16;
    CP3 = (CurrentPosition & 0x0000ff00UL) >>  8;
    CP4 = (CurrentPosition & 0x000000ffUL)      ;

也可以通过指针访问字节,
unsigned char *p = (unsigned char*)&CurrentPosition;
//use p[0],p[1],p[2],p[3] to access the bytes.

07-27 13:20