PHP将十六进制转换为字节

时间:2014-10-22 17:23:17

标签: php hex byte

我正在尝试通过socket_write($ socket,XXXX,1)将0x01 HEX作为Byte发送;

部分文档:

“......如果是,服务器将回复模块0x01,如果不是 - 重播0x00。服务器必须发送回答 - 1字节 用十六进制格式“

PHP是否有任何解决方案?

2 个答案:

答案 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() 运气。