digitalmars.D.learn - Low order hashes
- Michelle Long (7/7) Jan 01 2019 I need to hash a few strings to a byte, short, or int. hashOf
- Steven Schveighoffer (8/16) Jan 02 2019 Not from experience, but just thinking out loud, you could take the int
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.
Jan 01 2019
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
Jan 02 2019