php преобразует шестнадцатеричное число 273ef9 в путь 27 / 3e / f9 - PullRequest
0 голосов
/ 13 июля 2011

Как видно из заголовка, как эффективно преобразовать шестнадцатеричное число, такое как 273ef9, в путь, такой как 27/3e/f9 в PHP?

Последнее обновление ::: на самом деле, я хочу, чтобы необычное число конвертировалось в десятичное и далее конвертировалось в путь .... но, может быть, мы можем пропустить средний шаг.

Ответы [ 2 ]

5 голосов
/ 13 июля 2011

Как насчет объединения str_split с implode? Может быть не очень эффективным, но очень читабельным:

implode('/',str_split("273ef9",2));

Как примечание, это, конечно, будет хорошо работать с большими шестнадцатеричными строками и может обрабатывать частичные (длиной 3,5,7) шестнадцатеричные числа (просто печатая их как одну букву после последней косой черты).

Edit: с тем, что вы спрашиваете сейчас (десятичное число -> hex -> путь), это будет выглядеть так:

$num = 2572025;
$hex = dechex($num);
implode('/',str_split($hex,2));

Конечно, вы можете объединить его для еще более короткого, но менее читаемого представления: implode('/',str_split(dechex($num),2));

1 голос
/ 13 июля 2011

Самый эффективный подход - прикоснуться к каждому символу в шестнадцатеричном значении ровно один раз, создавая строку по ходу.Поскольку строка может иметь нечетное или четное количество цифр, вам придется начать с проверки этого, выводя одну цифру, если это строка нечетной длины.Затем используйте цикл for для добавления групп из двух цифр, следя за тем, добавлять ли косую черту или нет.Это будет несколько строк кода.

Если этот код не выполняется много миллионов раз, то , вероятно, не стоит писать этот алгоритм;У Михаила Петрова такая читаемая и такая милая.Пойдите с этим, если у вас нет реальной необходимости оптимизировать.

Кстати, чтобы перейти от десятичного числа к шестнадцатеричной строке, просто используйте dechex:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...