Я пытаюсь отправить 0x01 HEX в качестве байта 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-string :
"\x01"
Или в восьмеричных обозначениях:
"\001"
hex2bin("01") работает так же, как pack("H*") здесь. И есть bin2hex для противоположного направления.