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으로 읽히는 것을 의미합니까?
누군가 나를 도울 수 있습니까? :)
리틀 엔디안 때문입니까?
암 프로세서의 빅 엔디안은 혼란 스럽습니다. 특히 일부는 BE32이고 일부는 BE8입니다. –