Мне нужно выбрать функцию хеширования для преобразования уникального 8-байтового идентификатора в 4-байтовый идентификатор (настолько уникальный, насколько это возможно) на 12-битном микроконтроллере (MSP430) в C.
Что такое хэшированиефункцию вы бы предложили?
Я нашел некоторые функции здесь , но я не знаю, какую из них выбрать.
Обновление : вотстарый аналогичный вопрос с указанием исходного уникального формата идентификатора: Хеширование 64-битного значения в 32-битный MAC-адрес
Обновление 2:
RSHash((const uint8_t*)ID_8BYTE, 8);
uint32_t RSHash(const uint8_t* key, unsigned int len)
{
uint32_t b = 378551;
uint32_t a = 63689;
uint32_t hash = 0;
uint32_t i = 0;
for(i = 0; i < len; key++, i++)
{
hash = hash * a + (*key);
a = a * b;
}
return hash;
}