PHP конвертирует hex в байт

Я пытаюсь отправить 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 для противоположного направления.