php 接受16进制数据,PHP Socket 16进制数据发送问题

最近在做一个物联网的PHP项目,涉及用PHP发送16进制的指令数据,可把我蛋疼坏了,各种尝试无果,百度大把大把的文章看了不少,但问题始终没有解决!

描述:用PHP发送16进制指令,Socket服务器上接收到的必须是”AA 55 00 01 80 00 00“格式,但实际发送中,浏览器各种转码,空格给你转成20%!

BUT!!!

就在我快要放弃之时,偶然CSDN的一个帖子救了我!!!

大牛给出的解决方案是:

在每个16进制字符串前加“\x”。

示例:

一般:$cmd = "AA 55 00 01 80 00 00";//这种定义方式在发送的过程中被浏览器转了码,放弃!

大神:$cmd = "\xAA\x55\x00\x01\x01\x00\x00";//在每个16进制字符串前加了“\x”,Socket端成功接收到了16进制指令!

原理:巧妙的利用了转义字符!

转义字符

意义

ASCII码值(十进制)

\a

响铃(BEL)

007

\b

退格(BS) ,将当前位置移到前一列

008

\f

换页(FF),将当前位置移到下页开头

012

\n

换行(LF) ,将当前位置移到下一行开头

010</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值