Php printf()函数有问题

Php printf()函数有问题,php,Php,我有变量$a=5;我想以二进制形式显示它,长度等于8,在空白处写*,就像这样,像这样*****101 这是剧本 $number = 5; printf("%*8b", $number); 它不适用于*,但如果是“0”-s,它就可以工作 printf("%08b", $number); //returns 00000101 为什么它不适用于* 编辑: 我怎样才能应用浮动选项呢?像 `printf("%.4f", $number);` //it returns

我有变量$a=5;我想以二进制形式显示它,长度等于8,在空白处写*,就像这样,像这样*****101


这是剧本

$number = 5;
printf("%*8b", $number); 
它不适用于*,但如果是“0”-s,它就可以工作

   printf("%08b", $number);
      //returns 00000101
为什么它不适用于*

编辑: 我怎样才能应用浮动选项呢?像

`printf("%.4f", $number);` 

    //it returns 5.0000, but i want to return *****101.0000

一个可选的填充说明符 说明将用于哪个字符 将结果填充到右侧 字符串大小。这可能是一个空间 字符或0(零字符)。这个 默认设置为用空格填充。一 可以使用替代填充字符 通过在其前面加上 单引号(')。参见示例 下面

所以,使用

printf("%'*8b", $number); 
编辑:

试一试

printf("%'*.4f", $number); 

如果你想了解一些更复杂的情况,只需阅读

@Syom,我没有实际的php经验:)@osgx也许你使用过perl?有许多函数具有相同的语法?是的,我8年前使用过perl:)
printf
取自C,但据我所知,在printf的大多数版本中,使用替换字符(不是空格或零)填充是不受支持的。(只有php有“一个超级修改,允许您仅使用1个额外字符”或“甚至这个非常罕见的垃圾拼音函数在核心php中”)。在perl中,可以使用“格式”格式化输出,而不仅仅是使用printf。格式允许进行不同的填充,但它们面向可打印的纯文本,而不是html。关于编辑-是否要获取浮点的二进制表示形式?
printf(“%'*8b.00000”,$number)将适用于ints。对于浮点和二进制输出,就我所知,即使是PHP也没有内置的解决方案。