mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-15 23:04:08 +10:00
Merge remote-tracking branch 'refs/remotes/origin/v2' into v2
This commit is contained in:
23
.notes/hash.c
Normal file
23
.notes/hash.c
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
uint32_t hash (uint32_t x) {
|
||||||
|
x = ((x >> 16) ^ x) * 0x45d9f3b;
|
||||||
|
x = ((x >> 16) ^ x) * 0x45d9f3b;
|
||||||
|
x = ((x >> 16) ^ x);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t unhash ( uint32_t x ) {
|
||||||
|
x = (( x >> 16) ^ x) * 0x119de1f3;
|
||||||
|
x = (( x >> 16) ^ x) * 0x119de1f3;
|
||||||
|
x = (( x >> 16) ^ x);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
//I legit didn't know this algorithm could be reversed. Neat.
|
||||||
|
uint32_t value = 42;
|
||||||
|
printf("%u %u %u", value, hash(value), unhash(hash(value)));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user