Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.72 KB | None | 0 0
  1. uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
  2. {
  3.   uint32_t a,b,c;                                          /* internal state */
  4.   union { const void *ptr; size_t i; } u;     /* needed for Mac Powerbook G4 */
  5.  
  6.   /* Set up the internal state */
  7.   a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
  8.  
  9.   u.ptr = key;
  10.   if (HASH_LITTLE_ENDIAN && ((u.i & 0x3) == 0)) {
  11.     const uint32_t *k = (const uint32_t *)key;         /* read 32-bit chunks */
  12.     const uint8_t  *k8;
  13.  
  14.     /*------ all but last block: aligned reads and affect 32 bits of (a,b,c) */
  15.     while (length > 12)
  16.     {
  17.       a += k[0];
  18.       b += k[1];
  19.       c += k[2];
  20.       mix(a,b,c);
  21.       length -= 12;
  22.       k += 3;
  23.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement