39 > You can always create a `CxHashKey` structure by using the `CX_HASH_KEY()` macro |
39 > You can always create a `CxHashKey` structure by using the `CX_HASH_KEY()` macro |
40 > (when the length of the key is implicitly clear) or by using the `cx_hash_key()` function. |
40 > (when the length of the key is implicitly clear) or by using the `cx_hash_key()` function. |
41 > {style="note"} |
41 > {style="note"} |
42 |
42 |
43 > UCX assigns the hash value `1574210520` to the `NULL` pointer. |
43 > UCX assigns the hash value `1574210520` to the `NULL` pointer. |
44 > This is a careful choice which is not standard MurmurHash2 and an extension to support `NULL` pointers. |
44 > This is a careful choice that is not standard MurmurHash2 and an extension to support `NULL` pointers. |
45 |
45 |
46 Hashes from integers are created more efficiently by mixing up the bits to produce a good statistical distribution. |
46 Hashes from integers are created more efficiently by mixing up the bits to produce a good statistical distribution. |
47 The function `cx_hash_u32()` and `cx_hash_u64()` are provided for this purpose and provide collision-free hashes. |
47 The function `cx_hash_u32()` and `cx_hash_u64()` are provided for this purpose and provide collision-free hashes. |
48 The corresponding functions `cx_hash_key_u32()` and `cx_hash_key_u64()` can be used to create `CxHashKey` structures with those hashes. |
48 The corresponding functions `cx_hash_key_u32()` and `cx_hash_key_u64()` can be used to create `CxHashKey` structures with those hashes. |
49 |
49 |