求解一段16进制的字符串的验证

D0 44 00 05 00 09 03 02 00 00 00 00 27 0D

对方告诉后最后的那个27是校验值
算法是求和
因为每个字节是8位,所以求和只要后8位,前面的不要
把27前面的数据相加,然后取后8位

阅读 3.7k
2 个回答
<?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

提供的信息太少了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题