검색결과 리스트
글
1바이트보다 큰 값들을 멀티바이트 값이라고 한다.
LSB( least significant byte) 최하위 바이트
MSB( most significant byte) 최상위 바이트
* 리틀 엔디언
- LSB가 MSB보다 낮은 메모리 주소에 저장되는 방법
ex) 0xABCD1234 라면 0x34, 0x12, 0xCD, 0xAB로 순으로 저장됨
* 빅 엔디언
- MSB가 LSB보다 낮은 메모리 주소에 저장되는 방법
ex) 0xABCD1234 라면 0xAB, 0xCD, 0x12, 0x34로 순으로 저장됨
엔디언 문제를 해결하는 방법
1. 모든 데이터 파일을 텍스트 형태로 저장하고 멀티바이트 숫자는 한 숫자가 한 바이트가 되게 십진수 형태로 저장한다.
2. 툴에서 디스크에 저장하기 직전에 엔디언을 바꾸게 하는 방법
PC가 게임을 돌릴 콘솔과 엔디언이 달라도 무조건 콘솔의 엔디언을 따르게 하는 방법
엔디언을 바꾸는 함수
inline U16 swapU16(U16 value)
{
return ((value & 0x00FF << 8) | ((value & 0xFF00) >> 8);
}
inline U32 swapU32 ( U32 value)
{
return ((value & 0x000000FF) << 24)
((value & 0x0000FF00) << 8)
((value & 0x00FF0000) >> 8)
((value & 0xFF000000) >> 24)
}
'게임 엔진 아키텍처 > 3장 엔지니어링 기초' 카테고리의 다른 글
객체 메모리 (0) | 2016.05.24 |
---|---|
C/C++ 메모리 구조 (1) | 2016.05.24 |
선언, 정의, 연결성 (0) | 2016.05.24 |
수의 표현 (0) | 2016.05.24 |
C++ 개념과 사용법 (0) | 2016.05.23 |
RECENT COMMENT