Re: hashlittle(), hashbig(), hashword() and endianness
От | Heikki Linnakangas |
---|---|
Тема | Re: hashlittle(), hashbig(), hashword() and endianness |
Дата | |
Msg-id | 473C2C40.4070509@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: hashlittle(), hashbig(), hashword() and endianness (Alex Vinokur <alexvn@users.sourceforge.net>) |
Список | pgsql-patches |
Alex Vinokur wrote: > On Nov 15, 10:40 am, Alex Vinokur <ale...@users.sourceforge.net> > wrote: > [snip] >> I have some question concerning Bob Jenkins' functions >> hashword(uint32_t*, size_t), hashlittle(uint8_t*, size_t) and >> hashbig(uint8_t*, size_t) in lookup3.c. >> >> Let k1 by a key: uint8_t* k1; strlen(k1)%sizeof(uint32_t) == 0. >> >> 1. hashlittle(k1) produces the same value on Little-Endian and Big- >> Endian machines. >> Let hashlittle(k1) be == L1. >> >> 2. hashbig(k1) produces the same value on Little-Endian and Big-Endian >> machines. >> Let hashbig(k1) be == B1. >> >> L1 != B1 >> >> 3. hashword((uint32_t*)k1) produces >> * L1 on LittleEndian machine and >> * B1 on BigEndian machine. >> > =================================== >> --------------------- >> The question is: is it possible to change hashword() to get >> * L1 on Little-Endian machine and >> * B1 on Big-Endian machine >> ? > > Sorry, it should be as follows: > > Is it possible to create two new hash functions on basis of > hashword(): > i) hashword_little () that produces L1 on Little-Endian and Big- > Endian machines; > ii) hashword_big () that produces B1 on Little-Endian and Big- > Endian machines > ? Why? -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
В списке pgsql-patches по дате отправления: