무효화 데이터의 해시 키를 생성하는 방법을 알고 싶습니다.(void *) 데이터의 해시 키 생성
저는 네트워킹 및 패킷 처리 프로젝트를 진행하고 있습니다. 해시 테이블을 생성해야합니다. 패킷 헤더를 해시 할 패킷 헤더. 하지만 구조 나 패킷 헤더의 클래스를 모르겠습니다. 그럼, 이것에 대한 어떤 생각이든. 나는 그것을 단지 무효로 만들려고 생각하고있다. 무효화 데이터를 해싱하여 해시 키를 생성한다.
기타 아이디어. 좋은 논리가 환영됩니다.
무효화 데이터의 해시 키를 생성하는 방법을 알고 싶습니다.(void *) 데이터의 해시 키 생성
저는 네트워킹 및 패킷 처리 프로젝트를 진행하고 있습니다. 해시 테이블을 생성해야합니다. 패킷 헤더를 해시 할 패킷 헤더. 하지만 구조 나 패킷 헤더의 클래스를 모르겠습니다. 그럼, 이것에 대한 어떤 생각이든. 나는 그것을 단지 무효로 만들려고 생각하고있다. 무효화 데이터를 해싱하여 해시 키를 생성한다.
기타 아이디어. 좋은 논리가 환영됩니다.
봐 나는 당신의 입력에 적합하다고 생각하는 기능이있다 CityHash,에 :
// Hash function for a byte array.
uint64 CityHash64(const char *buf, size_t len);
이 가 지금까지 입력 유형은 단지 편의를 위해이기 때문에 내가 문자를 사용하고 말할 수있는
- 그것은 수행을 예를 들어 함수가 0 바이트를 찾으면 해시를 중지한다는 의미는 아닙니다.
또한 128 비트 버전 및 기타 기능이 있습니다.
버퍼의 길이를 취하는 한 모든 유형의 포인터를 허용하는 해시 함수를 사용할 수 있습니다. 그냥 포인터를 던져서 사용하십시오. 대부분의 해시 함수는 char *
입력과 size_t
길이를 사용합니다.
그러나 질문에 헤더의 길이가 없을 수도 있습니다. 이 길이가 없으면 작동하지 않습니다.
고마워 ... 길이 문제는 아무 것도없고 내가 가지고있다. 그리고 afcouse에는 많은 기능이 있습니다. 그러나 나는 이것을하고 싶다. :). 한 번 폐병, 내가하고있는 것은 char * a = & (char) (void) (ccHrd); 이것은 내가 잘못 알고 있지만. 그것은 내가 무엇을하려고하는지 그 감각을 말해줍니다. –
기본적으로 이것은 작동하지 않습니다. 이것을 Java의 관점에서 생각하면, hashCode는 equals와 일치해야합니다. 데이터에 대해 알지 못하는 경우 두 바이트가 같은지 여부를 어떻게 알 수 있습니까? 그리고 그들이 평등한지 모를 경우 어떻게 해시 테이블에서 찾을 수 있습니까? – ControlAltDel
감사 ... 괜찮습니다. 그러나 나는 다르게 생각하고 있습니다. void 형의 데이터가 있다고합니다. 이것을 테이블에 저장해야합니다. –
(a) 길이가 얼마나되는지 (b) 두 개의 얼룩의 평등에 대한 정의와 같이 길이 평등과 바이트 -와 평등을 허용하려는 경우 데이터의 크기를 해싱하고 비교하는 데 어려움이 없습니다. 문제는 상당히 쉽지만, 당신이 실제로 붙어있는 곳을 말하지 않았기 때문에, 사람들이 좋은 대답을 제공하기가 어려울 것입니다. – dmckee