发送16进制的问题

auroradcx

我需要用16进制和TCP客户端的硬件做通信
我在网上找了很多发送和接收16进制数据的方法
比如:
1.
接收16进制数据
当收到数据后用函数bin2hex($data)可以将数据转换成16进制。
发送16进制数据
发送数据前用hex2bin($data)将16进制数据转换成二进制发送。
2.
$cont='1ab63c082d6e';
Gateway::sendToClient($client_id,pack("H*",$cont)) ;
发送后,收到1a b6 3c 08 2d 6e
 
这种是发送固定16进制序列,而我需要自定义16进制数组,因为可能会根据实际情况发送不同的数值,可能会改变数组中的某些元素
那么问题来了,怎么定义这个16进制数组,并且以16进制的形式发送出去?
我是搞单片机的,PHP刚开始学,谢谢各位大神!

3885 1 0
1个回答

抽不完的寂寞

php 里字符串就是数组吧,可以通过下标来更改某个字节的值的。
比如 
$str = 'abcdefg';
$str = 'a';
var_export($str);
输出
aacedefg

  • auroradcx 2018-11-21

    你好!
    比如我某个任务输出了一个数组$arr=array(0XEB,0XFC,0X03,0XD4,0xAA);
    怎么把这个数组转化成‘ebfc03d4aa’呢?
    好像转成这个序列才能通过TCP发送出去

  • 抽不完的寂寞 2018-11-22

    bin2hex(implode('', array_map('chr', $arr)));

年代过于久远,无法发表回答
🔝