Преобразования между десятичной точкой и базой 36

Я хочу преобразовать числа в базу 36 с помощью PHP. Функция base_convert не работает, потому что я хочу преобразовать большие числа: я не получаю свой начальный номер, если я снова конвертирую его из базы 36 в десятичную.

Я пробовал некоторые функции, предоставляемые на нескольких сайтах, но я никогда не получал одинакового результата. Кроме того, эти два сайта (в Javascript) дают тот же результат:

  • http://www.unitconversion.org/numbers/base-10-to-base-36-conversion.html
  • http://www.translatorscafe.com/cafe/units-converter/numbers/calculator/decimal-to-base-36/

Например, 1010701001118000000000000000 необходимо преобразовать в 3IZS0ZE1RQ68W8SSW4 .

Вот функции, которые я пробовал (и которые не работают):

  • http://www.php.net/manual/fr/function.base-convert.php#34510
  • http://www.php.net/manual/fr/function.base-convert.php#106546
  • http://www.tonymarston.net/php-mysql/showsource.php?file=converter.php
  • http://www.geoffray.be/blog/php/convertir-des-nombres-en-base-62

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

 function fromDecimalToBase($in, $to) { $in = (string) $in; $out = ''; for ($i = strlen($in) - 1; $i >= 0; $i--) { $out = base_convert(bcmod($in, $to), 10, $to) . $out; $in = bcdiv($in, $to); } return preg_replace('/^0+/', '', $out); } function fromBaseToDecimal($in, $from) { $in = (string) $in; $out = ''; for ($i = 0, $l = strlen($in); $i < $l; $i++) { $x = base_convert(substr($in, $i, 1), $from, 10); $out = bcadd(bcmul($out, $from), $x); } return preg_replace('/^0+/', '', $out); } 

Тем не менее, я получаю 3izs0ze1rq66tifrpc за номер, который вы предоставили – может быть, ваше преобразование было неправильным?

http://www.pgregg.com/projects/php/base_conversion/base_conversion.php

На этой странице показано, как преобразовать произвольные длины между разными базами. Я попробовал ваш пример, и похоже, что он работает в обоих направлениях. Исходный код, написанный на PHP, доступен .