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 the0x
prefix.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
0x01
into 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’sbin2hex
for the opposite direction.