这个问题基本上是我的另一个问题的下半部分
如何将UINT16值转换为没有循环的UINT8*数组并避免endian问题.
基本上我想做这样的事情:
UINT16 value = 0xAAFF;
UINT8 array[2] = value;
Run Code Online (Sandbox Code Playgroud)
最终结果是将值存储到UINT8数组中,同时避免了字节序转换.
UINT8 * mArray;
memcpy(&mArray[someOffset],&array,2);
Run Code Online (Sandbox Code Playgroud)
当我只使用UINT16值执行memcpy时,它会转换为little-endian,这会破坏输出.我试图避免使用endian转换函数,但我想我可能只是运气不好.
我有一个UINT8指针mArray,它通过*(UINT16*)转换分配信息.例如:
int offset = someValue;
UINT16 mUINT16 = 0xAAFF
*(UINT16 *)&mArray[offset] = mUINT16;
for(int i = 0; i < mArrayLength; i++)
{
printf("%02X",*(mArray + i));
}
output: ... FF AA ...
expected: ... AA FF ...
Run Code Online (Sandbox Code Playgroud)
我希望在达到偏移时打印的值是AA FF,但打印的值是FF AA,而在我的生活中,我无法弄清楚原因.