gpt4 book ai didi

c - 使用移位和或操作进行缓冲操作

转载 作者:行者123 更新时间:2023-11-30 14:53:47 25 4
gpt4 key购买 nike

我不太确定我的代码并希望改进它。

我从SPI(8位通信)接收一些数据并将其存储到8位缓冲区中。为了使用它,我想使用 32 位字。我知道我的第一个代码可以工作,但我不确定第二个代码是否有效,有人可以确认吗?

uint8_t *regData[5];

spi_xfer(fd, "\x24\xFF\xFF\xFF\xCC", 5, regData, 5);
uint32_t regVal;
regVal = (regData[0]);
regVal += (uint32_t)(regData[1]) << 8;
regVal += (uint32_t)(regData[2]) << 16;
regVal += (uint32_t)(regData[3]) << 24;

第二个:

uint8_t *regData[5];

spi_xfer(fd, "\x24\xFF\xFF\xFF\xCC", 5, regData, 5);
uint32_t regVal;
regVal = (regData[0]) | (uint32_t)(regData[1]) << 8 | (uint32_t)(regData[2]) << 16 | (uint32_t)(regData[3]) << 24;

非常感谢您的帮助!

布里厄

最佳答案

uint8_t *regData[5];

regData[] 是一个指针数组。如果这是有意的,要检索存储在数组中指针处的值,您需要 dereference the pointer .

regVal = *(regData[0]);

否则,该操作会将 regData[0] 中存储的地址分配给 regVal,而不是该地址中存储的值。

关于c - 使用移位和或操作进行缓冲操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com