Займите время, чтобы назвать понятие системы хорошо и найти имена, которые связаны, это делает систему более знакомой. Решайтесь переименовывать понятия, чем лучше соединение с миром Вы знаете, тем лучше Ваш мозг может работать с ним.
Просят мнения от людей, которые получают их удары от чистых, простых решений.
Только понятия реализации, необходимые текущему проекту (требование того, чтобы соответствовать требованиям завтрашнего дня или универсальные системы делает Ваш дизайн чрезмерно увеличенным в размере).
Возможно, вам этого достаточно:
echo sprintf('%u', crc32($string));
РЕДАКТИРОВАТЬ : Другая аналогичная альтернатива,
echo hash('adler32', $string);
Вывод MD5 - это число, как и почти любой вообразимый хэш. Это просто число, которое обычно выражается в шестнадцатеричном формате. Используйте любой удобный для вас алгоритм хеширования, отрежьте от конца столько битов, сколько хотите, и обрабатывайте эти биты как числа. Любой хороший хэш будет иметь свои последние (или первые, или средние) n бит так же равномерно, как и все значение.
Я думаю, что в Stackoverflow уже есть несколько хороших вопросов по хешированию и PHP.
Попробуйте хеширование
+ php
поиск здесь.
Краткий список,
Вы можете использовать base_convert для преобразования шестнадцатеричного числа в десятичное и наоборот. Если вы хотите преобразовать целые числа (как строку) в шестнадцатеричный, вы ограничены 32-битными числами или меньше, я верю (PHP_INT_MAX).
php -r 'foreach (hash_algos() as $hash) { echo $hash, "\n", $a = hash($hash, "test"), "\n", $b = base_convert($a, 16, 10), "\n", $c = base_convert($b, 10, 16), "\n", ($c === $a ? "yes" : "no"), "\n\n"; }' > hashes.txt
Из имеющихся хешей, которые у меня были, это те, которые я мог преобразовать между десятичным и шестнадцатеричным форматами:
adler32
c1015d04
3238092036
c1015d04
yes
crc32
accf8b33
2899282739
accf8b33
yes
crc32b
d87f7e0c
3632233996
d87f7e0c
yes