Преобразование байтов, полученных через сокет 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);