假设我有以下字节数组:
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库一样)。