我对ARM设备字节序的相位感到困惑。我正在测试的设备使用小端。与ARM处理器的字节序混淆
假设有代码在这里,其交换元件中的阵列:
uint32_t* srcPtr = (uint32_t*)src->get();
uint8_t* dstPtr = dst->get();
dstPtr[0] = ((*srcPtr) >> 16) & 0xFF;
dstPtr[1] = ((*srcPtr) >> 8) & 0xFF;
dstPtr[2] = (*srcPtr) & 0xFF;
dstPtr[3] = ((*srcPtr) >> 24);
我的理解是,如果srcPtr包含{0,1,2,3}输出dstPtr应该是{1,2,3, 0}。
但输出是dstPtr是{2,1,0,3}。
这是否意味着srcPtr以这种方式读取3,2,1 - > 0?
有人可以帮我吗? :)
这是由于小端?
现在在arm处理器上的big endian,这是令人困惑,尤其是当一些BE32和一些BE8 .... –