Вы должны быть немного более конкретным здесь. Какой тип возврата? Это двоичная строка, поэтому часто вы видите не то, что на самом деле содержит.
Может начинаться с нескольких нулевых байтов (т. Е. Значение = 0, \0
char). Поскольку этот байт используется для обозначения конца строки в C и других языках, echo
и другие функции останавливаются, когда они сталкиваются с нулевым байтом (иногда в руководстве говорится, что функция «бинарно-безопасна», что означает, что она не считает нулевой байт как конец строки).
Также есть много непечатаемых символов. Обычно они имеют какое-то особое значение (например, символ 7 - это команда «bell», введите ее в свою оболочку, чтобы попробовать php -r 'echo "\7";'
).
Чтобы узнать, что находится в вашей строке, вы можете "преобразовать" каждый символ в его шестнадцатеричное представление. Для этого вы можете использовать bin2hex()
, обратите внимание, что для представления одного символа входной строки необходимы два символа.
$ php -r 'var_dump(bin2hex(pack("i",6)));'
string(8) "06000000"
(вывод, который вы видите выше, зависит от вашего оборудования.) В моем случае pack('i', 6);
возвращает целое число в формате little-endian , так как у меня есть процессор Intel.
Вы можете видеть, что первый символ (06
) имеет десятичное значение 6. Затем вы обычно смотрите, какому символу он принадлежит. Во многих случаях можно использовать таблицу ASCII, но учтите, что в случае использования юникода или любой другой кодировки определенные символы могут иметь другое значение. Согласно моей таблице ASCII, это ACK
символ . Это непечатный символ, он имеет только функцию управления.
Остается объяснить, почему это переводится в целое число 0. К счастью, это очень просто. Прочтите страницу руководства PHP по приведению строк к числам .
Если строка начинается с действительного
числовые данные, это будет значение
используемый. В противном случае значение будет 0
(Ноль). * +1032 *
Поскольку символ \6
не является ни знаком, ни цифрой (символы 0-9 являются десятичными \48
- \57
или \0x30
- \0x39
шестнадцатеричные) PHP возвращает ноль.