小编dp.*_*dp.的帖子

将UINT16值转换为UINT8数组[2]

这个问题基本上是我的另一个问题的下半部分

如何将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转换函数,但我想我可能只是运气不好.

c++ endianness

14
推荐指数
3
解决办法
5万
查看次数

打印时UINT16值似乎是"向后"

我有一个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,而在我的生活中,我无法弄清楚原因.

c++

2
推荐指数
1
解决办法
1661
查看次数

标签 统计

c++ ×2

endianness ×1