# MurmurHash problem

**URL:** <https://www.ruby-forum.com/t/murmurhash-problem/131550>\
**Category:** Development\
**Created:** [March 11, 2008, 9:38am UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550 "2008-03-11T09:38:23Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 11, 2008, 9:38am UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/1 "2008-03-11T09:38:23Z")

</div>

e$B$J$+$@$G$9!#e(B

At Tue, 11 Mar 2008 10:20:27 +0900 (JST),  
removed\_email\_address@domain.invalid wrote in [ruby-cvs:22983]:

> Log:  
> \* string.c (hash): replaced by MurmurHash described in  
> [http://murmurhash.googlepages.com/](http://murmurhash.googlepages.com/).

e$B$3$l$G$Oe(Baligne$B$5$l$F$$$J$$e(Bworde$B%“%/%;%9$r5v$5$J$$%7%9%F%`$G$OF0$-e(B  
e$B$^$;$s!#e(Bmurmurhashaligned.cppe$B$H$$$&$N$b$”$k$h$&$G$9$,!"$3$l$^$?e(B

- inte$B$,e(B32bite$B$G$J$$$H$J$i$J$$e(B
- little endiane$B$G$J$$$H$J$i$J$$e(B

e$B$H$$$&@)8B$,$"$j$=$&$G$9!#e(B

inte$B$,e(B64bite$B$N%7%9%F%`$G$be(B32bite$B@0?t$,$“$kJ]\>Z$C$F$”$k$s$G$7$?$C$1!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 11, 2008, 5:03pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/2 "2008-03-11T17:03:13Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34020] MurmurHash problem”  
on Tue, 11 Mar 2008 17:32:57 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$3$l$G$Oe(Baligne$B$5$l$F$$$J$$e(Bworde$B%“%/%;%9$r5v$5$J$$%7%9%F%`$G$OF0$-e(B  
|e$B$^$;$s!#e(Bmurmurhashaligned.cppe$B$H$$$&$N$b$”$k$h$&$G$9$,!“$3$l$^$?e(B  
|  
|\* inte$B$,e(B32bite$B$G$J$$$H$J$i$J$$e(B  
|\* little endiane$B$G$J$$$H$J$i$J$$e(B  
|  
|e$B$H$$$&@)8B$,$”$j$=$&$G$9!#e(B

e$B$=$&$+$“!#;DG0$@$J$”!#$^$?e(BJenkinse$B%O%C%7%e$KLa$9$+$J$"!#e(B

|inte$B$,e(B64bite$B$N%7%9%F%`$G$be(B32bite$B@0?t$,$“$kJ]\>Z$C$F$”$k$s$G$7$?$C$1!#e(B

e$BJ]\>Z$O$J$$$G$7$g$&$M!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 11, 2008, 8:07pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/3 "2008-03-11T20:07:10Z")

</div>

e$B@.@%$G$9!#e(B

Yukihiro M. wrote:

> |  
> |e$B$H$$$&@)8B$,$"$j$=$&$G$9!#e(B
> 
> e$B$=$&$+$"!#;DG0$@$J$"!#$^$?e(BJenkinse$B%O%C%7%e$KLa$9$+$J$"!#e(B
> 
> |inte$B$,e(B64bite$B$N%7%9%F%`$G$be(B32bite$B@0?t$,$"$kJ]\>Z$C$F$"$k$s$G$7$?$C$1!#e(B
> 
> e$BJ]\>Z$O$J$$$G$7$g$&$M!#e(B  
>   
> C99 e$B$Ne(B stdint.h e$B$G$Oe(B uintN\_t (N e$B$Oe(B 8,16,32,64)  
> e$B$,I,?$K$J$C$F$$$^$9$+$i!"e(B  
> C99 e$BBP1~$N%3%s%Q%$%i$J$i$PB8:_$7$^$9!#e(B  
> e$B$J$N$G!"e(B32bit e$B$N%7%9%F%`$G$O8@$&$^$G$b$J$/!"e(B 64bit e$BBP1~$N%7%9%F%`e(B (=e$B$3$l$+$i$N%7%9%F%`e(B)  
> e$B$G$b$^$:3N\<B$Ke(B 32bit e$B@0?t$,e(B  
> e$BB8:_$9$k$H8@$C$F$h$$$+$H;W$$$^$9!#e(B

e$B0J2\<$N$h$&$J$b$N$re(B defines.h e$B$K$\*$$$?$&$($Ge(B uint32\_t  
e$B$r;H$&$h$&$K$9$l$P$h$$$+$H!#e(B

#if HAVE\_STDINT\_H

# include \<stdint.h\>

#else

# if SIZEOF\_INT == 4

# ifndef int32\_t

typedef int int32\_t;

# define int32\_t int

# endif

# ifndef int32\_t

typedef unsigned int uint32\_t

# endif

# endif

#else

# error ----\>\> int32\_t is not defined. \<\<----

#endif

e$B%(%s%G%#%"%s$O\>o$K%P%$%H$4$H$K\<h$C$F$$$/$H$+$G$9$+$M$’!#e(B  
e$B:G?7$N%3%s%Q%$%i$@$H$=$N$X$s$A$c$s$HNI$-$K$O$+$i$C$F$/$l$=$&$J5$$,$9$k$N$G$9$,!"e(B  
e$B\>l9gJ,$1$7$?J}$,$$$$$N$+$J$!!#e(B

# e$B87L)$K$d$m$&$H$9$k$H\<B9T;~J,4t$,I,MW$=$&$J$N$G$9$,!&!&!&!#e(B

e$B$H$3$m$G!"e(BRuby 1.9  
e$B$C$F$I$NDxEY$^$GA0Ds$K$7$F$$$$$N$G$9$C$1!#e(B

- ANSI C e$B$G$"$ke(B
- char e$B$Oe(B8bit e$B$Ge(B CHAR\_BIT e$B$Oe(B 8
- char e$B$,e(B singed e$BA0Ds$OIT2De(B
- int, long, pointer e$B$Oe(B32bit e$B0J\>e$Ne(B 2 e$B$NN\_\>he(B
- int == long e$BA0DsIT2De(B (LP64e$BEye(B (e$BB?$/$Ne(B UNIX e$B7Oe(B))
- long == pointer e$BA0DsIT2De(B (LLP64e$BEye(B (Win64))
- long long e$BA0DsIT2De(B ?
- C99 e$BA0Ds$OIT2De(B
- e$B%(%s%G%#%"%s$Oe(B big/little e$B$r9MN8e(B (\__BIG\_ENDIAN_  
e$BEy$rA0Ds$K$7$F$O$J$i$J$$e(B)

e$B$"$H$Oe(B int e$B$He(B long e$B$N;H$$J,$1$G$7$g$&$+!#$J$s$H$J$/!"e(B

- int e$B$O$?$@$N@0?t!#e(B
- long e$B$OJ8;zNsD9$dJ8;z0LCVEy!"%]%$%s%?$H$N1i;;$,9T$o$l$&$k$b$N!#e(B  
e$B$+$J$!$H;W$C$F$$$k$N$G$9$,!"e(BLP64 e$B$@$He(Bint e$B$K$\*$$$Fe(B  
64bit e$B2=$N287C$,\<u$1$i$l$:!"e(B  
LLP64 e$B$@$He(B int == long != \*void e$B$J$N$Ge(B long  
e$B$rJ,$1$k0U5A$,$J$$$J$!$H$+!#e(B  
e$B8e\<T$Oe(B intptr\_t e$B$K$7$F$b$h$5$=$&$J5$$b$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 12, 2008, 11:53am UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/4 "2008-03-12T11:53:18Z")

</div>

æˆç€¬ã§ã™ã€‚

ã¨ã„ã†ã‚ã‘ã§ã€int32\_t, uint32\_t, intptr\_t, uintptr\_t ã‚’å®šç¾©ã—ã¤ã¤ã€  
hash() ã‚’ã‚¢ãƒ©ã‚¤ãƒ¡ãƒ³ãƒˆè€ƒæ…®ã•ã›ã‚‹ãƒ‘ãƒƒãƒã§ã™ã€‚

U.Nakamura wrote:

> | ã‚ã¨ã¯ int ã¨ long ã®ä½¿ã„åˆ†ã‘ã§ã—ã‚‡ã†ã‹ã€‚ãªã‚“ã¨ãªãã€  
> | \* int ã¯ãŸã ã®æ•´æ•°ã€‚  
> | \* long ã¯æ–‡å­—åˆ—é•·ã‚„æ–‡å­—ä½ç½®ç­‰ã€ãƒã‚¤ãƒ³ã‚¿ã¨ã®æ¼”ç®—ãŒè¡Œã‚ã‚Œã†ã‚‹ã‚‚ã®ã€‚  
> | ã‹ãªãã¨æ€ã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€LP64 ã ã¨int ã«ãŠã„ã¦ 64bit åŒ–ã®æ©æµãŒå—ã‘ã‚‰ã‚Œãšã€  
> | LLP64 ã ã¨ int == long != \*void ãªã®ã§ long ã‚’åˆ†ã‘ã‚‹æ„ç¾©ãŒãªã„ãªãã¨ã‹ã€‚  
> | å¾Œè€…ã¯ intptr\_t ã«ã—ã¦ã‚‚ã‚ˆã•ãã†ãªæ°—ã‚‚ã—ã¾ã™ã€‚
> 
> longã‚’ç¦æ­¢ã«ã™ã‚‹ã¨ç§ãŒå–œã¶ã‚ˆã†ãªæ°—ãŒã—ã¾ã™ã€‚  
> ãŒã€ä¸–ç•Œä¸­ã®æ‹¡å¼µãƒ©ã‚¤ãƒ–ãƒ©ãƒªä½œè€…ãŒæ³£ãã‚“ã˜ã‚ƒãªã„ã§ã™ã‹ã­ã€‚

ç¦æ­¢ã¯ã€ŒãŽã‚ƒã£ã€ã©ã“ã‚ã®ã•ã‚ãŽã˜ã‚ƒãªã•ãã†ã§ã™ãŒã€  
Ruby æœ¬ä½“ã‹ã‚‰ã®è¿½æ”¾ã¨éžæŽ¨å¥¨åŒ–ã¯ã§ããã†ã§ã™ã‚ˆã­ã€‚

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 12, 2008, 1:35am UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/5 "2008-03-12T01:35:30Z")

</div>

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:34024] Re: MurmurHash problem”  
on Mar.12,2008 03:34:41, [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:  
| \* long long e$BA0DsIT2De(B ?

e$BIT2D$G$9!#8=\>u$G$b$=$l$r8!=P$7$F=hM}$rJ,4t$7$F$k$O$:$G$9$1$Ie(B  
e$B$M!#e(B

| e$B$"$H$Oe(B int e$B$He(B long e$B$N;H$$J,$1$G$7$g$&$+!#$J$s$H$J$/!“e(B  
| \* int e$B$O$?$@$N@0?t!#e(B  
| \* long e$B$OJ8;zNsD9$dJ8;z0LCVEy!”%]%$%s%?$H$N1i;;$,9T$o$l$&$k$b$N!#e(B  
| e$B$+$J$!$H;W$C$F$$$k$N$G$9$,!"e(BLP64 e$B$@$He(Bint e$B$K$\*$$$Fe(B 64bit e$B2=$N287C$,\<u$1$i$l$:!"e(B  
| LLP64 e$B$@$He(B int == long != \*void e$B$J$N$Ge(B long e$B$rJ,$1$k0U5A$,$J$$$J$!$H$+!#e(B  
| e$B8e\<T$Oe(B intptr\_t e$B$K$7$F$b$h$5$=$&$J5$$b$7$^$9!#e(B

longe$B$r6X;\_$K$9$k$H;d$,4n$V$h$&$J5$$,$7$^$9!#e(B  
e$B$,!"@$3&Cf$N3HD%%i%$%V%i%j:n\<T$,5c$/$s$8$c$J$$$G$9$+$M!#e(B

e$B$=$l$G$O!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 12, 2008, 3:05pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/6 "2008-03-12T15:05:45Z")

</div>

e$B$J$+$@$G$9!#e(B

At Wed, 12 Mar 2008 19:50:18 +0900,  
NARUSE, Yui wrote in [ruby-dev:34026]:

> e$B$H$$$&$o$1$G!"e(Bint32\_t, uint32\_t, intptr\_t, uintptr\_t e$B$rDj5A$7$D$D!“e(B  
> hash() e$B$r%”%i%$%a%s%H9MN8$5$;$k%Q%C%A$G$9!#e(B

inttypes.he$B$r%A%'%C%/$7$F$J$$$h$&$J5$$,$7$^$9!#e(B

e$B$"$He(BBig  
endiane$B$K$J$k$H$d$dCY$/$J$j$=$&$J$N$G!"0l1~:n$C$F$\*$$$?$Ne(B  
e$B$b=P$7$F$\_$^$9!#e(B

# Index: configure.in

— configure.in (revision 15758)  
+++ configure.in (working copy)  
@@ -583,5 +583,5 @@ AC\_CHECK\_HEADERS(stdlib.h string.h unist  
syscall.h pwd.h grp.h a.out.h utime.h memory.h direct.h  
sys/resource.h   
sys/mkdev.h sys/utime.h xti.h netinet/in\_systm.h float.h ieeefp.h  
pthread.h \

- 

```
ucontext.h intrinsics.h langinfo.h locale.h)

```

- 

```
ucontext.h intrinsics.h langinfo.h locale.h stdint.h)

```

dnl Check additional types.  
@@ -621,4 +621,16 @@ AC\_CHECK\_TYPES(struct timespec)  
AC\_CHECK\_TYPE(fd\_mask, [AC\_DEFINE(HAVE\_RB\_FD\_INIT, 1)])

+test ${rb\_cv\_type\_uint32\_t+set} && ac\_cv\_type\_uint32\_t=yes  
+AC\_CHECK\_TYPE(uint32\_t)  
+if test ${ac\_cv\_type\_uint32\_t} != yes; then

- AC\_CACHE\_CHECK([unsigned 32bit int],
- rb\_cv\_type\_uint32\_t,
- [for type in short int long; do
- 

```
 AC_COMPILE_IFELSE(AC_LANG_BOOL_COMPILE_TRY([], [sizeof($type) == 

```

4]),

- [rb\_cv\_type\_uint32\_t=$type; break], [])
- done])
- AC\_DEFINE(uint32\_t, $rb\_cv\_type\_uint32\_t)  
+fi
- 

# AC\_CACHE\_CHECK(for stack end address, rb\_cv\_stack\_end\_address, [rb\_cv\_stack\_end\_address=no Index: string.c

— string.c (revision 15758)  
+++ string.c (working copy)  
@@ -26,4 +26,8 @@  
#endif

+#if HAVE\_STDINT\_H  
+#include \<stdint.h\>  
+#endif  
+  
VALUE rb\_cString;  
VALUE rb\_cSymbol;  
@@ -1686,4 +1690,11 @@ rb\_str\_concat(VALUE str1, VALUE str2)  
}

+#if defined **i386** || defined \_M\_IX86 || defined \_\_ia64  
+#define UNALIGNED\_WORD\_ACCESS 1  
+#endif  
+#ifndef UNALIGNED\_WORD\_ACCESS  
+#define UNALIGNED\_WORD\_ACCESS 0  
+#endif  
+  
/\* MurmurHash described in [http://murmurhash.googlepages.com/](http://murmurhash.googlepages.com/) \*/  
unsigned int  
@@ -1695,14 +1706,93 @@ hash(const unsigned char \* data, int len  
h += 0xdeadbeef;

- while(len \>= 4) {
- h += \*(unsigned int \*)data;
- h \*= m;
- h ^= h \>\> r;

- if (len \>= 4) {  
+#if !UNALIGNED\_WORD\_ACCESS
- int align = (VALUE)data & 3;
- if (align) {
- 

```
 uint32_t t = 0, d = 0;

```

- 

```
 int sl, sr, pack;

```

- 
- 

```
 switch (align) {

```

+#ifdef WORDS\_BIGENDIAN

- 

```
   case 1: t |= data[2];

```

- 

```
   case 2: t |= data[1] << 8;

```

- 

```
   case 3: t |= data[0] << 16;

```

+#else

- 

```
   case 1: t |= data[2] << 16;

```

- 

```
   case 2: t |= data[1] << 8;

```

- 

```
   case 3: t |= data[0];

```

+#endif

- 

```
 }

```

- 
- 

```
 t <<= (8 * align);

```

- 
- 

```
 data += 4-align;

```

- 

```
 len -= 4-align;

```

- 
- 

```
 sl = 8 * (4-align);

```

- 

```
 sr = 8 * align;

```

- 
- 

```
 while (len >= 4) {

```

- d = \*(uint32\_t \*)data;  
+#ifdef WORDS\_BIGENDIAN
- t = (t \<\< sr) | (d \>\> sl);  
+#else
- t = (t \>\> sr) | (d \<\< sl);  
+#endif
- h += t;
- h \*= m;
- h ^= h \>\> r;
- t = d;
- 
- data += 4;
- len -= 4;
- 

```
 }

```

- 
- 

```
 pack = len < align ? len : align;

```

- 

```
 d = 0;

```

- 

```
 switch (pack) {

```

+#ifdef WORDS\_BIGENDIAN

- 

```
   case 3: d |= data[2];

```

- 

```
   case 2: d |= data[1] << 8;

```

- 

```
   case 1: d |= data[0] << 16;

```

- 

```
   case 0:

```

- h += (t \<\< sr) | (d \>\> sl);  
+#else
- 

```
   case 3: d |= data[2] << 16;

```

- 

```
   case 2: d |= data[1] << 8;

```

- 

```
   case 1: d |= data[0];

```

- 

```
   case 0:

```

- h += (t \>\> sr) | (d \<\< sl);  
+#endif
- h \*= m;
- h ^= h \>\> r;
- 

```
 }

```

- data += 4;
- len -= 4;

- 

```
 data += pack;

```

- 

```
 len -= pack;

```

- }

- else  
+#endif

- {

- 

```
 do {

```

- h += \*(uint32\_t \*)data;

- h \*= m;

- h ^= h \>\> r;

- 
- data += 4;

- len -= 4;

- 

```
 } while (len >= 4);

```

- }  
}

- 

```
 case 3:

```

- h += data[2];

- 

```
 case 2:

```

- h += data[1] \<\< 8;

- 

```
 case 1:

```

- h += data[0] \<\< 16;  
+#else  
case 3:  
h += data[2] \<\< 16;  
@@ -1711,4 +1801,5 @@ hash(const unsigned char \* data, int len  
case 1:  
h += data[0];  
+#endif  
h \*= m;  
h ^= h \>\> r;

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 13, 2008, 2:46pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/7 "2008-03-13T14:46:00Z")

</div>

pegacorn e$B$G$9!#e(B

From: “NARUSE, Yui” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
Date: Wed, 12 Mar 2008 03:34:41 +0900  
Message-Id: [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

> > |inte$B$,e(B64bite$B$N%7%9%F%`$G$be(B32bite$B@0?t$,$“$kJ]\>Z$C$F$”$k$s$G$7$?$C$1!#e(B
> > 
> > e$BJ]\>Z$O$J$$$G$7$g$&$M!#e(B  
> >   
> > C99 e$B$Ne(B stdint.h e$B$G$Oe(B uintN\_t (N e$B$Oe(B 8,16,32,64) e$B$,I,?$K$J$C$F$$$^$9$+$i!"e(B  
> > C99 e$BBP1~$N%3%s%Q%$%i$J$i$PB8:\_$7$^$9!#e(B

e$B5,3J=q$OFI$s$G$$$J$$$N$G$9$,!"e(B  
uintN\_t e$B$OG$0U$J$N$G$O$J$$$G$7$g$&$+!#e(B

e$B%W%m%0%i%\_%s%08@8le(B C e$B$N?75!G=e(B:

> [vO~O¾ê C ÌV@\](http://seclan.dll.jp/c99d/c99d09.htm#dt19990621)\>  
> e$B87L)$JI}$r;}$D@0?t7?$K4X$9$kDj5Ae(B  
> intN\_t e$BId9fIU$-@0?t7?$Ne(B typedef e$BL\>e(B  
> uintN\_t e$BId9f$J$7@0?t7?$Ne(B typedef e$BL\>e(B  
> e$B87L)$K$=$NI}$r;}$D@0?t7?!#$3$l$i$N7?$OG$0U$G$"$k$,!“e(B  
> e$B$b$7\<BAu$,e(B 8, 16, 32, 64 e$B%S%C%H$N@0?t7?$rDs6!$7$F$$$k$J$ie(B  
> e$BAjEv$9$ke(B typedef e$BL\>$rDj5A$9$kI,MW$,$”$k!#e(B  
> \<\<

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 13, 2008, 6:09pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/8 "2008-03-13T18:09:38Z")

</div>

e$B@.@%$G$9!#e(B

pegacorn wrote:

> > C99 e$B$Ne(B stdint.h e$B$G$Oe(B uintN\_t (N e$B$Oe(B 8,16,32,64) e$B$,I,?$K$J$C$F$$$^$9$+$i!“e(B  
> > e$B87L)$K$=$NI}$r;}$D@0?t7?!#$3$l$i$N7?$OG$0U$G$”$k$,!“e(B  
> > e$B$b$7\<BAu$,e(B 8, 16, 32, 64 e$B%S%C%H$N@0?t7?$rDs6!$7$F$$$k$J$ie(B  
> > e$BAjEv$9$ke(B typedef e$BL\>$rDj5A$9$kI,MW$,$”$k!#e(B

e$B$`$`!“e(BC99 e$B$@$H$?$7$+$K;}$C$F$$$l$P!”$K$J$C$F$$$^$9$M!#e(B

e$B$^$!!"e(BPOSIX e$B$NJ}$G$Oe(B 32 e$B$OI,?$K$J$C$F$$$^$9$7!“e(B  
[http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html](http://www.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html)  
Win64 e$B$O$=$b$=$be(B int e$B$,e(B 32bit  
e$B$J$N$G!”$3$N$I$A$i$+$H$J$k$H!"e(B  
e$B$=$l$J$j$K!VJ]\>c!W$5$l$F$$$k$H8@$C$F$$$$$H$O;W$&$N$G$9$,!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [March 12, 2008, 4:27pm UTC](https://www.ruby-forum.com/t/murmurhash-problem/131550/9 "2008-03-12T16:27:12Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34027] Re: MurmurHash problem”  
on Wed, 12 Mar 2008 23:04:38 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|At Wed, 12 Mar 2008 19:50:18 +0900,  
|NARUSE, Yui wrote in [ruby-dev:34026]:  
|\> e$B$H$$$&$o$1$G!“e(Bint32\_t, uint32\_t, intptr\_t, uintptr\_t e$B$rDj5A$7$D$D!“e(B  
|\> hash() e$B$r%”%i%$%a%s%H9MN8$5$;$k%Q%C%A$G$9!#e(B  
|  
|inttypes.he$B$r%A%'%C%/$7$F$J$$$h$&$J5$$,$7$^$9!#e(B  
|  
|e$B$”$He(BBig endiane$B$K$J$k$H$d$dCY$/$J$j$=$&$J$N$G!"0l1~:n$C$F$\*$$$?$Ne(B  
|e$B$b=P$7$F$\_$^$9!#e(B

e$B$A$c$s$HF0$/$h$&$J$i%3%\_%C%H$7$F$b$i$&$H$"$j$,$?$$$N$G$9$,!#e(B
