我正在尝试通过socket_write($ socket,XXXX,1)将0x01 HEX作为Byte发送;
部分文档:
“......如果是,服务器将回复模块0x01,如果不是 - 重播0x00。服务器必须发送回答 - 1字节 用十六进制格式“
PHP是否有任何解决方案?
答案 0 :(得分:8)
有多种选择:
使用pack()
函数时,H*
格式说明符的字符串参数应不包含0x
前缀。
pack("H*", "01")
要将单个十六进制数转换为字节,您还可以使用chr()
。
chr(0x01)
这里PHP首先将hex-literal 0x01
解释为普通整数1
,而chr()将其转换为字符串。反转(对于套接字读取)是ord()
。
最常见的替代方法是仅使用C-string escapes:
"\x01"
或以八进制表示法:
"\001"
hex2bin("01")
就像pack("H*")
一样。而且bin2hex
的方向相反。
答案 1 :(得分:0)
使用 PHP 将数据转换为单个字节,这对我来说是个谜。 chr() 是对我有用的技巧。到目前为止,我没有使用 pack() 运气。