我写了下面的php小程序来测试printf和sprintf:
php
printf
sprintf
<?php $str_1 = printf("%x%x%x", 65, 127, 245); $str_2 = sprintf("%x%x%x", 65, 127, 245); echo $str_1 . "\n"; echo $str_2 . "\n";
输出如下:
417ff56 417ff5
为什么我在输出的第一行有6个数字?
7z5jn7bk1#
printf不返回字符串,而是直接输出(只返回长度)。试试这个
<?php printf("%x%x%x", 65, 127, 245); $str_2 = sprintf("%x%x%x", 65, 127, 245); echo "\n". $str_2 . "\n"; ?>
输出
417ff5 417ff5
Fiddle
现在你可能会问为什么多出6个(在你的输出中)呢?因为printf返回打印字符串的长度,在您的情况下是6。事情是这样的
417ff56 // that extra 6 comes from your first echo. 417ff5
ie3xauqp2#
printf:-直接打印格式化后的字符串。sprintf:-转换给定的格式并将值存储在变量中,您可以使用echo/print打印变量值。
$text = "65 127 245"; printf("%x%x%x", 65, 127, 245); $str_2 = sprintf("%x%x%x", 65, 127, 245); echo $str_2;
2条答案
按热度按时间7z5jn7bk1#
printf不返回字符串,而是直接输出(只返回长度)。试试这个
输出
Fiddle
现在你可能会问为什么多出6个(在你的输出中)呢?因为printf返回打印字符串的长度,在您的情况下是6。
事情是这样的
ie3xauqp2#
printf:-直接打印格式化后的字符串。
sprintf:-转换给定的格式并将值存储在变量中,您可以使用echo/print打印变量值。