January 01, 2019 Low order hashes | ||||
---|---|---|---|---|
| ||||
I need to hash a few strings to a byte, short, or int. hashOf works for int only on x86. What would be a nice way to accomplish this? Collisions are not good but not catastrophic. Mainly I need a unique ID to emulate enums. I might just chop off the extra bits or mash them up somehow and it will probably work but hoping for something more solid. |
January 02, 2019 Re: Low order hashes | ||||
---|---|---|---|---|
| ||||
Posted in reply to Michelle Long | On 1/1/19 2:40 PM, Michelle Long wrote:
> I need to hash a few strings to a byte, short, or int. hashOf works for int only on x86.
>
> What would be a nice way to accomplish this? Collisions are not good but not catastrophic. Mainly I need a unique ID to emulate enums. I might just chop off the extra bits or mash them up somehow and it will probably work but hoping for something more solid.
>
Not from experience, but just thinking out loud, you could take the int and xor the parts together.
in other words:
auto x = hashOf(y);
ushort realHash = (x ^ (x >> 16)) & 0xffff;
ubyte would be 4 terms, but still not too bad.
-Steve
|
Copyright © 1999-2021 by the D Language Foundation