Преобразование байтов, полученных через сокет php, в целое число

Я использую netty API для создания Java-сервера, который отправляет, если клиентская программа отправляет на сервер что-либо число, например 5. Это целое число с 4 байтами. Я думаю, что это должно быть так же, как запись целого числа в OutputStream. Поэтому я хочу получить целое число сейчас по php. Но если я вызываю socket_read, он ничего не выводит, поскольку он не преобразует 4 байта в целое число. Он просто использует это как текст.

Если я отправляю символ, он работает, поэтому мне нужен способ преобразовать его в php.

Или было бы лучше всего конвертировать все в текстовую клиентскую часть, так что все это на основе текста. Я думаю, может быть, я должен придерживаться текстового или двоичного вывода.

РЕДАКТИРОВАТЬ: Другой вопрос, связанный с этим, скажем, у меня есть 4 байта в Java. Как я могу построить целое число? Нужно ли конкатить 4 байта?

Пример:

Байт 1: 00000000

Байт 2: 00010000

Байт 3: 00000101

Байт 4: 00000001

Результат: 00000000 00010000 00000101 00000001

Было бы это правильно?

1 ответ

Решение

Вы, вероятно, хотите использовать функцию распаковки. Что-то вроде:

$data = socket_read($sock,4);
$x = unpack("N",$data);
Другие вопросы по тегам