我写了以下小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位数?
答案 0 :(得分:5)
printf不返回字符串,它直接输出它(并仅返回其长度)。试试这个
<?php
$text = "65 127 245";
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(在你的输出中)呢?因为打印字符串返回打印字符串的长度,在您的情况下为6。
所以这是怎么回事
417ff56 // that extra 6 comes from your first echo.
417ff5
答案 1 :(得分:0)
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;