从C中的字节数组一次读取两个字节

Jan*_*dło 2 c memory arrays

假设我有以下字节数组:

uint8_t barr[4] = {0xCE, 0xCE, 0xCE, 0xCE};
Run Code Online (Sandbox Code Playgroud)

给定索引n,我希望能够读取两个字节:

uint16_t d16 = barr[0];
Run Code Online (Sandbox Code Playgroud)

并且必须d16等于

0xCECE
Run Code Online (Sandbox Code Playgroud)

也许标准库中有一个可以执行此类任务的功能?

iBu*_*Bug 8

一块蛋糕:

memcpy(&d16, barr + n, sizeof(d16));
Run Code Online (Sandbox Code Playgroud)

不要尝试转换指针或使用unions.这些都是未定义的行为,或者可能是陷阱陷阱表示.memcpy()是"规范"解决方案(正如C++ boost库所做的那样).

  • @JanParzydło不那么容易,你应该阅读关于endianess的内容.认为样本具有不同的值{0x11,0x12,0x13,0x14} (3认同)