
SHasher라는 클래스는 언리얼 엔진의 FName기능과 상당히 유사하지요.FName 은 쉽게 생각하면 특정 스트링을 특정 ID와 대응시키는 기능이라 생각하면 편합니다.사실 스트링과 ID를 대응시키는 방법은 언리얼 엔진만의 전유물이 아닙니다. 그저 언리얼 엔진이 유명해서 FName이라는 기능이 유명할 뿐이죠.
그렇기에 언리얼 엔진의 구체적인 구현체를 분석하기 보다는 스트링을 ID로 변환하는 일반적인 방법론에 대해 설명해 드리겠습니다.
해당 방법은 바로 스트링 해시맵의 인덱스를 이용하는 것입니다.

10924 % 8 == 486942 % 8 == 6436784 % 8 == 0
8888 이고 8으로 나눈 해시 인덱스가 0이라서 “Cat”이라는 문자열과 충돌이 난다면 Cat 다음에 저장해주면 됩니다(Open Addressing). 그럼 ID값이 1이 되겠죠

union {
struct {
uint32 _HashedValue; // 해쉬 상위 32비트
uint32 _CurNodeCnt; // 해쉬 하위 32비트
};
uint64 _hashX; // 해쉬 64비트 전체값
};