#include <stdint.h>
#include <stddef.h>
Go to the source code of this file.
◆ hashlittle()
| uint32_t hashlittle |
( |
const void * | key, |
|
|
size_t | length ) |
Definition at line 68 of file hash_me.c.
69{
71 union {
const void *ptr;
size_t i; } u;
72
73
74 a =
b = c = 0xdeadbeef + ((uint32_t)
length);
75
76 u.ptr = key;
77 {
78 const uint8_t *
k = (
const uint8_t *)key;
79
80
82 {
84 a += ((uint32_t)
k[1])<<8;
85 a += ((uint32_t)
k[2])<<16;
86 a += ((uint32_t)
k[3])<<24;
88 b += ((uint32_t)
k[5])<<8;
89 b += ((uint32_t)
k[6])<<16;
90 b += ((uint32_t)
k[7])<<24;
92 c += ((uint32_t)
k[9])<<8;
93 c += ((uint32_t)
k[10])<<16;
94 c += ((uint32_t)
k[11])<<24;
98 }
99
100
102 {
103 case 12: c+=((uint32_t)
k[11])<<24;
104 case 11: c+=((uint32_t)
k[10])<<16;
105 case 10: c+=((uint32_t)
k[9])<<8;
107 case 8 :
b+=((uint32_t)
k[7])<<24;
108 case 7 :
b+=((uint32_t)
k[6])<<16;
109 case 6 :
b+=((uint32_t)
k[5])<<8;
111 case 4 : a+=((uint32_t)
k[3])<<24;
112 case 3 : a+=((uint32_t)
k[2])<<16;
113 case 2 : a+=((uint32_t)
k[1])<<8;
115 break;
116 case 0 : return c;
117 }
118 }
119
121 return c;
122}
static BOOLEAN length(leftv result, leftv arg)