I’m trying to send 0x01 HEX as Byte using the socket_write($socket, XXXX , 1); function.
There is part of documentation:
“…If yes, server will reply to module 0x01, if not – replay 0x00. Server must send answer – 1 Byte in HEX format.”
Advertisement
Answer
There are multiple alternatives:
When using the
pack()function, the string argument to theH*format specifier should not include the0xprefix.pack("H*", "01")To convert a single hex-number into a byte you can also use
chr().chr(0x01)
Here PHP first interprets the hex-literal
0x01into a plain integer1, while chr() converts it into a string. The reversal (for socket reading) isord().The most prevalent alternative is using just using C-string escapes:
"x01"
Or in octal notation:
"01"
hex2bin("01")works just likepack("H*")here. And there’sbin2hexfor the opposite direction.