Commit 8eb0648 1 parent 2b6d04c commit 8eb0648 Copy full SHA for 8eb0648
File tree 1 file changed +10
-10
lines changed
1 file changed +10
-10
lines changed Original file line number Diff line number Diff line change 16
16
*/
17
17
18
18
function murmurhash3_int ($ key ,$ seed =0 ){
19
- $ key = ( string ) $ key ;
20
- $ klen = strlen ($ key );
21
- $ h1 = $ seed ;
19
+ $ key = array_values ( unpack ( ' C* ' ,( string ) $ key)) ;
20
+ $ klen = count ($ key );
21
+ $ h1 = ( int ) $ seed ;
22
22
for ($ i =0 ,$ bytes =$ klen -($ remainder =$ klen &3 ) ; $ i <$ bytes ; ) {
23
- $ k1 = (( ord ( $ key [$ i ]) & 0xff ))
24
- | (( ord ( $ key [++$ i ]) & 0xff ) << 8 )
25
- | (( ord ( $ key [++$ i ]) & 0xff ) << 16 )
26
- | (( ord ( $ key [++$ i ]) & 0xff ) << 24 );
23
+ $ k1 = $ key [$ i ]
24
+ | ($ key [++$ i ] << 8 )
25
+ | ($ key [++$ i ] << 16 )
26
+ | ($ key [++$ i ] << 24 );
27
27
++$ i ;
28
28
$ k1 = (((($ k1 & 0xffff ) * 0xcc9e2d51 ) + ((((($ k1 >= 0 ? $ k1 >> 16 : (($ k1 & 0x7fffffff ) >> 16 ) | 0x8000 )) * 0xcc9e2d51 ) & 0xffff ) << 16 ))) & 0xffffffff ;
29
29
$ k1 = $ k1 << 15 | ($ k1 >= 0 ? $ k1 >> 17 : (($ k1 & 0x7fffffff ) >> 17 ) | 0x4000 );
@@ -35,9 +35,9 @@ function murmurhash3_int($key,$seed=0){
35
35
}
36
36
$ k1 = 0 ;
37
37
switch ($ remainder ) {
38
- case 3 : $ k1 ^= ( ord ( $ key [$ i + 2 ]) & 0xff ) << 16 ;
39
- case 2 : $ k1 ^= ( ord ( $ key [$ i + 1 ]) & 0xff ) << 8 ;
40
- case 1 : $ k1 ^= ( ord ( $ key [$ i ]) & 0xff ) ;
38
+ case 3 : $ k1 ^= $ key [$ i + 2 ] << 16 ;
39
+ case 2 : $ k1 ^= $ key [$ i + 1 ] << 8 ;
40
+ case 1 : $ k1 ^= $ key [$ i ];
41
41
$ k1 = ((($ k1 & 0xffff ) * 0xcc9e2d51 ) + ((((($ k1 >= 0 ? $ k1 >> 16 : (($ k1 & 0x7fffffff ) >> 16 ) | 0x8000 )) * 0xcc9e2d51 ) & 0xffff ) << 16 )) & 0xffffffff ;
42
42
$ k1 = $ k1 << 15 | ($ k1 >= 0 ? $ k1 >> 17 : (($ k1 & 0x7fffffff ) >> 17 ) | 0x4000 );
43
43
$ k1 = ((($ k1 & 0xffff ) * 0x1b873593 ) + ((((($ k1 >= 0 ? $ k1 >> 16 : (($ k1 & 0x7fffffff ) >> 16 ) | 0x8000 )) * 0x1b873593 ) & 0xffff ) << 16 )) & 0xffffffff ;
You can’t perform that action at this time.
0 commit comments