Мне сложно преобразовать значение, которое я прочитал из сокетного соединения в целое. Это значение говорит мне, сколько байтов будет получено дальше.Невозможно преобразовать строку в int в PHP
$ar = fread($client, 4);
$binaryInt = unpack('N', $ar);
debug_to_console($binaryInt); //displays 16 (as expected)
$bred = fread($client, intval($binaryInt)); //intval returns 1
По какой-то причине intval всегда оценивает 1, и я не могу понять, почему. Btw переменная $ ар передается целое число от сервера Java Я работает через этот образец кода
dOut.writeInt(data.length);
Благодарности
редактировать
я, наконец, получил его. user2587326 ниже помог, но вместо использования intval (binaryInt [1]) это было просто binaryInt [1].
Мы не знаем, на что вы рассчитываете. –
[unpack] (http://php.net/manual/en/function.unpack.php) возвращает массив. Вызов [intval] (http://php.net/manual/en/function.intval.php) в массиве всегда будет возвращать 1 и выдавать уведомление, поэтому то, что вы видите, совершенно нормально. Что вы на самом деле пытаетесь сделать? – Pevara
Это значение сообщает мне, сколько бит я получаю после 4-байтового целочисленного значения, которое я пытаюсь оценить. «$ bred = fread ($ client, ...)» - это то, где он не оценивает то, что я хочу – sc2bigjoe