一段16进制的数据求和
D0 44 00 05 00 09 03 02 00 00 00 00 27 0D
这段代码是PHP通过TCP获取的数据
bin2hex以后,输出的
27是校验用的值
要把27前面的数据求和,=27才能通过,!=27的话,就要放弃这段
对方给的思路
因为每个字节是8位,所以求和只要后8位,前面的不要
把27前面的数据相加,然后取后8位
我算出来了
<?php $string = 'D0 44 00 05 00 09 03 02 00 00 00 00'; $arr = explode(' ',$string); $sum = 0; for($i=0;$i<$len;$i++){ $sum+=hexdec($arr[$i]); //先转成10进制相加 } $sum = base_convert((string)$sum,10,16); //再转成16进制 = 127 //取后面两位 echo substr($sum,-2); // = 27
如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

评论(6)

发布评论
需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。