Каковы некоторые простые способы хэшировать 32-разрядное целое число (например, IP-адрес, например Unix time_t и т.д.), до 16-разрядного целого?
например. hash_32b_to_16b(0x12345678)
может вернуться 0xABCD
.
Начнем с этого как ужасное, но функциональное примерное решение:
function hash_32b_to_16b(val32b) {
return val32b % 0xffff;
}
Вопрос конкретно о JavaScript, но не стесняйтесь добавлять любые нейтрально-нейтральные решения, желательно без использования библиотечных функций.
Контекст для этого вопроса заключается в создании уникальных идентификаторов (например, 64-разрядный идентификатор может состоять из нескольких 16-разрядных хэшей различных 32-битных значений). Рекомендуется избегать столкновений.
Простой = хороший. Wacky + obfuscated = забавный.