2013-05-31 3 views
1

Я хочу преобразовать буквенно-цифровое значение (string) в числовое значение (int). alphanumeric значения, такие как 'af45TR'. Я хотел, чтобы числовое значение (int) должно быть unique, и оно не должно выходить за пределы int, как 64, 32 bits. Как я могу это сделать?.Преобразование AlphaNumeric в числовое и должно быть уникальным номером

ответ

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 из вас, тогда какой-то алгоритм может быть легко разработан. Используйте хэш-алгоритм, который имеет очень низкую вероятность наличия одного и того же значения хэширования и может быть задан, чтобы просто возвращать цифры только в хэшировании.

Надеюсь, это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^