base_convert() may lose precision on large numbers due to properties related to the internal "double" or "float" type used. Please see the Floating point numbers section in the manual for more specific information and limitations.
Это я имя файла из содержимого генерю %)
Экономит helluvalot of space, кстати, сам подход - не приходится хранить кучу дублей.
А в 36 - чтобы имена файлов были покороче и не такие скучные
собственно, обратная конвертация мне не нужна
просто на 32- и на 64-битных системах разный результат. Написал об этом в жж, а Болк попросил посмотреть, как обратно кодирует - тут мне и самому стало интересно.
<?php
/**
* This is base_convert implementation that is able to support more than 31 bit integers
*
* @param $num
* @param $base_a
* @param $base_b
* @return string
*/
function gmp_convert($num, $base_a, $base_b)
{
return gmp_strval (gmp_init($num, $base_a), $base_b );
}
А чем банальный strtolower(base64(md5(..., true)) не подходит? Вероятность, что при приведении к lowerrcase будет конфликт, немногим выше вероятность коллизии а если забить на windows то вообще можно без strtolower.