php - printf和sprintf有不同的输出

时间:2014-11-25 07:10:34

标签: php

我写了以下小php程序来测试printfsprintf

<?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位数?

2 个答案:

答案 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;