Я пытаюсь отправить 0x01 HEX как Byte с помощью socket_write ($ socket, XXXX, 1);
Есть часть документации:
«… Если да, сервер ответит на модуль 0x01, если нет — воспроизвести 0x00. Сервер должен отправить ответ — 1 байт
в формате HEX «
Есть ли решение сделать это с помощью PHP?
Есть несколько альтернатив:
При использовании pack()
функция, строковый аргумент H*
спецификатор формата должен не включить 0x
префикс.
pack("H*", "01")
Для преобразования одного шестнадцатеричного числа в байт вы также можете использовать chr()
.
chr(0x01)
Здесь PHP сначала интерпретирует шестнадцатеричный 0x01
в простое число 1
, в то время как chr () преобразует его в строку. Реверс (для чтения сокетов) ord()
.
Наиболее распространенная альтернатива — использование только C-строка убегает:
"\x01"
Или в восьмеричной записи:
"\001"
hex2bin("01")
работает так же, как pack("H*")
Вот. И есть bin2hex
для противоположного направления.
Других решений пока нет …