哈希函数适用于8/16位"图形"在8位处理器上

时间:2018-01-24 22:23:47

标签: hash 8-bit

对于相干噪声的实现(类似于Perlin noise),我正在寻找适合图形的hash function

我不需要以任何方式加密,而且,我甚至不需要它成为超级棒的哈希。

我只想组合两个16位数字并输出一个8位哈希值。随机尽可能随意,但AVR处理器(Arduino使用的8位)也很快。

目前我正在使用实施here

const uint32_t hash(uint32_t a)
{
    a -= (a<<6);
    a ^= (a>>17);
    a -= (a<<9);
    a ^= (a<<4);
    a -= (a<<3);
    a ^= (a<<10);
    a ^= (a>>15);
    return a;
}

但是考虑到我除了8位以外的所有内容,并且我不需要任何壮观的东西,我可以使用较少的指令逃脱吗?

...我的lib8tion图书馆通过FastLED打包,启发了我的搜索。它具有特定的功能,例如,多个两个uint8_t数字,以尽可能少的时钟周期给出uint16_t个数字。

1 个答案:

答案 0 :(得分:2)

结帐Pearson hashing

unsigned char hash(unsigned short a, unsigned short b) {
    static const unsigned char t[256] = {...};
    return t[t[t[t[a & 0xFF] ^ (b & 0xFF)] ^ (a >> 8)] ^ (b >> 8)];
}