php将十六进制数273ef9转换为路径27 / 3e / f9

时间:2011-07-13 05:05:48

标签: php algorithm

正如标题所示,将273ef9等十六进制数转换为PHP中27/3e/f9之类的路径是多么有效?

更新::: 实际上,我想要一个非正常的数字转换为dexadecimal和furthr转换为路径....但可能我们可以跳过中间步骤。

2 个答案:

答案 0 :(得分:5)

如何将str_split与implode结合起来?可能不是超级高效但非常易读:

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

作为旁注,这当然适用于较大的十六进制字符串,并且可以处理部分(3,5,7英寸长)十六进制数字(通过在最后一个斜线后将其打印为单个字母)。

编辑:根据您现在的要求(十进制 - >十六进制 - >路径),它看起来像这样:

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

当然,您可以将它组合成更短但可读性更低的表示: implode('/',str_split(dechex($num),2));

答案 1 :(得分:1)

最有效的方法是只触摸十六进制值中的每个字符一次,随时构建字符串。因为字符串可能有奇数或偶数位数,所以你必须先检查一下,如果它是一个奇数长度的字符串,则输出一个数字。然后使用for循环来附加两位数的组,小心是否添加斜杠。这将是几行代码。

除非这个代码被执行了数百万次,否则可能不值得写出这个算法;迈克尔彼得罗夫是如此可读和如此美好。除非您真正需要优化,否则请继续使用。

顺便说一句,要从十进制数转到十六进制数字,只需使用dechex:)