Алгоритм хеширования для помещения определенного количества цифр в фиксированное количество сегментов - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу втиснуть 10 базовых 10 цифр (от 0 до 9 999 999 999) в 6 шестнадцатеричных цифр (от 00 00 00 до FF FF FF).Я знаю, что будут столкновения, и это нормально.Мне также не нужно беспокоиться об отдельной цепочке для размещения коллизий. Кроме того, мне не нужно преобразовывать хеш обратно в оригинал.Просто нужно иметь заданное количество сегментов (6 шестнадцатеричных цифр в 3 байтах), которые можно представить как 00 00 00 FF FF FF.Так что да, будет много чисел от 0 до 9,999,999,999, которые соответствуют этим сегментам ... это нормально.

Кто-нибудь знает хороший алгоритм для этого или пакет в Java / Kotlin?

1 Ответ

0 голосов
/ 27 февраля 2019

Простейшим подходом было бы просто использовать mod на основе 10-го числа

base_var_value % 16777215

Это число 16M просто FF FF FF в шестнадцатеричном формате.

...