FNV

From SimsWiki
Jump to: navigation, search

FNV hash function

Overview

The Fowler-Noll-Vo hash function is used in various Sims 3 resources, be it the 32 or 64 bit form, it is used in the generation of property ids, instance ids, bone ids, etc. Occasionally a 24 bit hash will be used, which is just a 32 bit hash with the high byte folded down and XORd with the low byte.

Formula

The hash is generated with an initial offset, which is multiplied by a prime number and XOR'ed by each byte of data.

N.B. When hashing strings, the characters must first be converted to lower-case to comply with standards.

FNV(byte[] data)
{
	hash = offset;
	foreach(byte b in data)
	{
		hash *= prime;
		hash ^= b;
	}
	return hash;
}

Constants

Bits Prime Offset
32 0x01000193 0x811C9DC5
64 0x00000100000001B3 0xCBF29CE484222325
Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox