我试图通过socket_write($ socket,XXXX,1)发送0x01 HEX作为Byte;
部分文档:
"...如果是,服务器将回复模块0x01,如果不是 - 重播0x00.服务器必须发送答案 - 1个字节的HEX格式"
PHP有没有解决方案呢?
有多种选择:
当使用pack()功能,将字符串参数的H*格式说明应该不包括0x前缀.
pack("H*", "01")
Run Code Online (Sandbox Code Playgroud)要将单个十六进制数转换为字节,您也可以使用chr().
chr(0x01)
Run Code Online (Sandbox Code Playgroud)
PHP首先将hex-literal解释0x01为普通整数1,而chr()将其转换为字符串.反转(对于套接字读取)是ord().
最流行的替代方法是仅使用C字符串转义:
"\x01"
Run Code Online (Sandbox Code Playgroud)
或者以八进制表示法:
"\001"
Run Code Online (Sandbox Code Playgroud)hex2bin("01")像pack("H*")这里一样工作.这bin2hex是相反的方向.
| 归档时间: |
|
| 查看次数: |
7542 次 |
| 最近记录: |