假设我有以下字节数组:

uint8_t barr[4] = {0xCE, 0xCE, 0xCE, 0xCE};

给定索引n,我希望能够读取两个字节:
uint16_t d16 = barr[0];

并让d16等于
0xCECE

也许标准库中有一个函数可以执行此类任务?

最佳答案

一块蛋糕:

memcpy(&d16, barr + n, sizeof(d16));

不要尝试转换指针或使用union。这些要么是 undefined 的行为,要么可能会触发陷阱表示。 memcpy()是“规范”解决方案(与C++ boost库一样)。

10-06 14:27