2016-12-15 1 views
-1

У меня есть функция, которая кодирования чисел в строку, как:Как получить код обратного номера от букв?

  • 0 -> а
  • 1 -> б
  • 2 -> с
  • ...
  • 45 -> R

Функция:

public static function encode($number) { 
    $out = ""; 
    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 

    while ($number > 53) { 
     $key = $number % 54; 
     $number = floor($number/54) - 1; 
     $out = $codes{$key}.$out; 
    } 

    return $codes{$number}.$out; 
} 

Как сделать функцию обратного преобразования, которая преобразует буквы обратно в число?

+0

Вы должны взглянуть на функции StrPos, которые дают вам положение Lettre в строке: http://php.net/manual/en/function.strpos.php – Yoleth

+0

изобретая таблицу ASCII? – RomanPerekhrest

+0

Основываясь на вашем коде, что это означает, если данное число больше 53? – Perumal

ответ

0

Его легко использовать функцию strpos

public static function decode($letter) { 

    $letter = $letter[0]; 

    $codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 

    $pos = strpos($codes,$letter); 

    return $pos; 

} 
+0

Никто не отвечает на работу. Например, я хочу декодировать Hk4n, Za, www ... Он всегда будет возвращен 53 – bars96

2

Вы можете рассматривать строку как массив и использовать позицию, так что это будет проще для кодирования:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 
return $codes[$number]; 

Возможно, вам понадобится проверка некоторых ошибок:

return isset($codes[$number]) ? $codes[$number] : false; 

Тогда для декодирования, найти букву в этой позиции:

$codes = "abcdefghjkmnpqrstuvwxyz23456789ABCDEFGHJKMNPQRSTUVWXYZ"; 
return strpos($codes, $letter); 

strpos() возвратит false для вас, если не найден.

+0

Никто не отвечает. Например, я хочу декодировать Hk4n, Za, www ... Он всегда будет возвращен 53 – bars96

+0

Затем вам нужно отредактировать свой вопрос со входами и выходами. Это не очевидно из вашего вопроса. – AbraCadaver

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