union을 사용해서 4byte 인덱스 조합하기
2018. 12. 4. 11:44ㆍProgramming/c++
- #include <iostream>
- union SpawnObjectIndex
- {
- public:
- SpawnObjectIndex(unsigned short regionIndex, unsigned short localIndex)
- {
- region = regionIndex;
- local = localIndex;
- }
- unsigned int GetFullIndex() { return FullIndex; }
- unsigned int GetRegionIndex() { return region; }
- unsigned int GetLocalIndex() { return local; }
- private:
- unsigned int FullIndex;
- struct
- {
- unsigned short local;
- unsigned short region;
- };
- };
- void idxprint(SpawnObjectIndex& idx)
- {
- std::cout << "Full : " << idx.GetFullIndex() << std::endl;
- std::cout << "Region : " << idx.GetRegionIndex() << std::endl;
- std::cout << "Local : " << idx.GetLocalIndex() << std::endl;
- std::cout << std::endl;
- }
- int main()
- {
- SpawnObjectIndex idx = SpawnObjectIndex(2, 0);
- idxprint(idx);
- SpawnObjectIndex idx2 = SpawnObjectIndex(65535, 0);
- idxprint(idx2);
- SpawnObjectIndex idx3 = SpawnObjectIndex(65535, 65535);
- idxprint(idx3);
- return 0;
- }
4바이트의 unsigned int를 각각 2바이트씩 잘라서 unsigned short형의 index값을 2개 조합해서 겹치지 않는 index를 발행하기 위해 작성함.
각 키의 index범위는 unsigned short형이므로 0~65,535까지이고, Full Index의 표현 범위는 unsigned int형이므로 0~4,294,967,295까지이다.
'Programming > c++' 카테고리의 다른 글
[c++] jsoncpp 빌드 및 사용방법 (1) | 2019.05.27 |
---|---|
string split (0) | 2018.11.21 |
rvalue 참조 사이트 (0) | 2017.02.17 |