| delorie.com/archives/browse.cgi | search |
| X-Authentication-Warning: | anthony.siemens.ebp.ii3.b-rail.be: ddemerre owned process doing -bs |
| Date: | Fri, 2 Feb 2001 06:23:29 +0100 (CET) |
| From: | Dieter Demerre <ext DOT dieter DOT demerre AT siemens DOT be> |
| X-Sender: | <ddemerre AT anthony DOT siemens DOT ebp DOT ii3 DOT b-rail DOT be> |
| To: | <djgpp AT delorie DOT com> |
| Subject: | Re: Hash function |
| In-Reply-To: | <95cfee$m9h$1@venus.telepac.pt> |
| Message-ID: | <Pine.LNX.4.30.0102020622480.28137-100000@anthony.siemens.ebp.ii3.b-rail.be> |
| MIME-Version: | 1.0 |
| X-MIME-Autoconverted: | from QUOTED-PRINTABLE to 8bit by delorie.com id AAA32655 |
| Reply-To: | djgpp AT delorie DOT com |
| Errors-To: | nobody AT delorie DOT com |
| X-Mailing-List: | djgpp AT delorie DOT com |
| X-Unsubscribes-To: | listserv AT delorie DOT com |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Thu, 1 Feb 2001, Frederico Jerónimo wrote:
> Ex : Given 0x8ae29 the function would return 0x629
>
> I know this is not a very efficient hash function so I was wondering if
> anyone has any ideas for a better one. Thanks in advance,
int hashpjw(const int seed, const char* s)
/*
ACTION:
perform some bit-operations upon the characters of s, to obtain a
rather unique integer. (chaotic behaviour)
(n.b. chaotic means little changes within s chould cause huge changes
in result)
Refer to the Dragonbook.
*/
{
const char* p;
unsigned int hv = 0;
unsigned int g;
for ( p = s; *p; p++ ) {
hv = (hv << 4) + (*p);
if ((g = (hv & 0xf0000000U)) != 0U) {
hv = hv ^ (g >> 24);
hv = hv ^ g;
} else {
}
}
return hv % seed;
}
- -- Groetjes vanwege... Greetings from... --
- -- Dieter Demerre *** ddemerre AT acm DOT org --
- -- http://www.angelfire.com/de/ddemerre/ --
-----BEGIN PGP SIGNATURE-----
Version: PGP 6.5.8
iQA/AwUBOnpEWglG34XnM6kpEQKgPgCfXOGpwglZWcBMHjbzQBLcmrEoQQgAoNtp
G74fNBxbmrf2Aff0suJx9p0f
=jkYA
-----END PGP SIGNATURE-----
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |