gpt4 book ai didi

c - 从 uint8_t 数组的四个元素中获取 uint32_t 的优雅方式?

转载 作者:行者123 更新时间:2023-12-04 08:01:49 27 4
gpt4 key购买 nike

我有一个 uint8_t 数组,我需要从中获取前 4 个元素,32 位,以创建一个 size_t(uint32_t我的机器)。

示例非工作代码:

uint8_t array[8];
array[0] = 128;
array[1] = 128;
array[2] = 0;
array[3] = 0;
size_t size = array[0]; //results in 128
size = *array; //also results in 128

该数组的前四个索引的字节是 80 80 00 00

我希望 size_t 通过从该数组(小端)读取数据的前 4 个字节得到 128 + 256*128。有没有办法让 size_t 初始化直接读取这 4 个字节,就好像数组是任何旧的内存块一样,而不是必须手动添加和乘以找到我想要的值?

最佳答案

要以可移植的方式(即独立于字节序)执行此操作,请使用移位运算符。有点像

uint32_t result = 0;
for(int i=3; i>=0; --i) {
result <<= 8;
result += array[i];
}
// result now holds the value you desire

关于c - 从 uint8_t 数组的四个元素中获取 uint32_t 的优雅方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840821/

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