Я написал следующую крошечную 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 цифр в первой строке вывода?
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
скрипка
Теперь вы можете спросить, почему этот дополнительный 6 (на вашем выходе)? Becuase printf возвращает длину печатной строки, которая равна 6 в вашем случае.
Итак, вот как это происходит
417ff56 // that extra 6 comes from your first echo. 417ff5
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;