본문 바로가기
카테고리 없음

uchar *가 가리키는 일부 데이터를 uint 또는 ulong으로 캐스팅할 때

by 어다프 2020. 2. 18.

와나.. 엄청 헤맸네.

 

uchar *data가 2560*1920 bayer format의 데이터를 가리킨다고 했을 때, 데이터는 가령

        GBGBGB....

        RGRGRG....

        ....

 

이런 식으로 들어올 것인데...

 

여기서 맨 처음 주소의 GBGB (0123 주소번호) 을 uint (4byte) 데이터로 캐스팅하면 어떻게 될까?

        uint ui = *(uint *) data;

 

먼저 data의 0번 주소부터 3번 주소까지 GBGB 0123를 헥사로 표현해보자.

        0x00112233 (여기서 각 숫자는 실제 데이터가 아닌 주소의 번호)

 

그렇다면, ui의 데이터를 헥사로 표현하면 ?

        0x33221100 이 된다................... 뒤집혔어!!!!!!!!!!!!!! 이것 때문에 헤맴...

 

주의하시랏! 어바!

 

p.s. 왜 캐스팅 하냐면... 주소 억세스 줄일려고.. 4byte씩 캐스팅하면 주소 억세스 1/4로 줄어듬... ulong으로 하면? 8byte니까 1/8로 줄어듬... 

하나더!! sizeof(ulong)으로 데이터 사이즈 찍어볼 수 있다고라~~ 빠이!