Я хочу преобразовать буквенно-цифровое значение (string)
в числовое значение (int
). alphanumeric
значения, такие как 'af45TR'
. Я хотел, чтобы числовое значение (int)
должно быть unique
, и оно не должно выходить за пределы int
, как 64, 32 bits
. Как я могу это сделать?.Преобразование AlphaNumeric в числовое и должно быть уникальным номером
1
A
ответ
2
Если вы считаете, что строка является номером в базе 62, вы можете написать функцию для преобразования базы с базы 62 на базовую 10. Например, в PHP может быть;
function base62toDec($n)
{
$vals = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$vals = array_flip(str_split($vals));
$out = 0;
$len = strlen($n);
for ($i = 0; $i < $len; $i++) {
$c = $n[$len - ($i + 1)];
$out += $vals[$c] * pow(62, $i);
}
return $out;
}
echo base62toDec('af45TR'); // outputs 9383949355
2
Вы можете сопоставить, но для всех буквенно-цифровых вы не можете иметь уникальный числовой. просто используйте принцип голубиного отверстия. У вас больше места для буквенно-цифрового, но сравнительно небольшого пространства для числового.
, так что сначала укажите max length из вас, тогда какой-то алгоритм может быть легко разработан. Используйте хэш-алгоритм, который имеет очень низкую вероятность наличия одного и того же значения хэширования и может быть задан, чтобы просто возвращать цифры только в хэшировании.
Надеюсь, это поможет.