Я столкнулся с той же проблемой, что и Эдуардо ( Генерация хэш-суммы для нескольких целых чисел ), но моя немного отличается, как сказано в названии.
У меня четыре 32-битныхцелые числа и мне нужно сгенерировать уникальный ключ 64 бит.На данный момент я сгенерировал конкатенацию строк из целых четверок, разделенных символом '/', а затем сгенерировал CRC со строкой.
char id_s[64];
sprintf(id_s, "%d/%d/%d/%d", a, b, c, d);
uint64_t id = CRC(id_s);
Но проблема в том, что мне нужно сделатьэто несколько миллионов раз, так что, похоже, он сильно загружает процессор.Поэтому я думал о прямом сохранении четырех целых чисел в одно целое число.
Это можно легко сделать, если четыре целых числа имеют целые числа 16 бит.Это можно сделать, используя оператор сдвига битов.
uint64_t id = a << 48 + b << 32 + c << 16 + d;
С четырьмя 32-битными целыми числами мне нужно сложить 128 бит в одно 64-битное целое.
Есть ли у кого-нибудь предложения?