最近遇到一个项目需要用到udp发送16进制数据到某IP:端口 udp用起来了 但是如何发送16进制数据呢?尝试好久无发解决,希望指点12.
这里贴出我在网上学来的代码,通过这种方式发送过去的一直是字符串并不是16进制。
谢谢了
$ip = '127.0.0.1';
$port = '8888';
$str_hex = '020304055A00006455230101110040F38590C77A501141';
$handle = stream_socket_client('udp://'.$ip.':'.$port,$errno,$errstr);
if (!$handle) {
die('ERROR:'.$errno. '- '.$errstr.'\n');
}
fwrite($handle,$str_hex.'\n');
fclose($handle);
看了下,你那个是16进制字符串,而不是十六进制字节
https://www.cnblogs.com/lxcsmallcity/p/3259471.html
这个应该是你要的
发送的时候需要转成bytehex格式,你的那个方法只是转成hexstr,用这个方法可以转成串口识别的数据pack('H*',$msg),接收的地方用hex2bin()就能把串口返回的hex转成直观的字符串