У меня есть следующая задача.
У меня есть 1 миллиард или более 20-байтовых различных хэшей (хранящихся в некоторой базе данных), общее число которых меньше Java Long.MAX_VALUE;
После этого у меня есть почти бесконечный поток таких хешей.
Есть ли возможность создать некоторое биективное отображение из набора этих 20-байтовых различных хешей в набор чисел от 0 до Long.MAX_VALUE
?
Вид полиномиального вычисления типа Лагранжа - но может быть что-то действительно быстрое и эффективное для такого случая.
Нам нужно быстрое long
вычисление значения для каждого га sh из этого почти бесконечного потока .
Каждые 20 байтов га sh - это просто число.
Перед обработкой потока мы можем создать отображение
20-byte | 8-byte
(hash1 1)
....
(hashN N)
После этого, когда у нас будет следующий ха sh из бесконечного потока, мы получим 8-байтовое значение га sh без поиска, используя только арифметические расчеты.