为什么base_convert、dechex和decbin在PHP中返回未添加的字符串?

为什么base_convert、dechex和decbin在PHP中返回未添加的字符串?,php,string,ordinals,Php,String,Ordinals,好的,所以我理解在PHP世界和这个级别的编程中,一般顺序值规则。所以像18这样的数字在PHP函数中生成时将简单地返回为18。这对我来说是有道理的。默认情况下,以10为基数的数字通常不会保留0填充 但随后出现了&。返回字符串的格式如下: 字符串基数\转换字符串$number,int$frombase,int$tobase 字符串dechex int$number 字符串decbin int$number 这是有意义的,因为在PHP中,这样的值不是序数: ord 13变为十六进制d ord 32变为

好的,所以我理解在PHP世界和这个级别的编程中,一般顺序值规则。所以像18这样的数字在PHP函数中生成时将简单地返回为18。这对我来说是有道理的。默认情况下,以10为基数的数字通常不会保留0填充

但随后出现了&。返回字符串的格式如下:

字符串基数\转换字符串$number,int$frombase,int$tobase

字符串dechex int$number

字符串decbin int$number

这是有意义的,因为在PHP中,这样的值不是序数:

ord 13变为十六进制d

ord 32变为bin 100000

现在这些是技术上正确的值。但对我来说没有意义的是,为什么每个返回值都没有留下这样的填充,这对我来说似乎更容易理解:

ord 13变为十六进制0d

ord 32变为bin 00100000

对于通过,&生成的二进制和十六进制数,为什么没有左0填充选项,我缺少一些逻辑原因吗


在我看来,一个简单的填充选项可以添加到每个函数的接口中吗?可能与真/假一样简单,选项可能类似。或者,由于添加此类选项可能会产生复杂的格式漏洞,因此故意取消了此类选项?意思是,“只要使用str_pad,因为它们是字符串&不是序数,所以可以随意处理。”

因为他们没有想到这一点,这在PHP中似乎是一个非常常见的原因……值得一提的是,Javascript的NumbertoString也没有留下pad结果。在这样一个函数上加上字符串填充,感觉有点与它的用途正交,依我看。如果你继续这样做,你会达到……也许是因为如果你把它们用作变量,PHP会将前导零视为octal@Fred-ii-:除了PHP将数字上下文中使用的所有字符串解释为十进制。有点像catch-22,然后@IgnacioVazquez Abrams