php计算bbc校验和

/**
 * @param $byte1
 * @param $byte2
 * @return string
 * hex数据BBC异或校验(两两比较)
 */
function hexOr($byte1, $byte2)
{
    $result='';
    $byte1= str_pad(base_convert($byte1, 16, 2), '8', '0', STR_PAD_LEFT);
    $byte2= str_pad(base_convert($byte2, 16, 2), '8', '0', STR_PAD_LEFT);
    $len1 = strlen($byte1);
    for ($i = 0; $i < $len1 ; $i++) {
        $result .= $byte1[$i] == $byte2[$i] ? '0' : '1';
    }
    return strtoupper(base_convert($result, 2, 16));
}
 

//多个数据比较

/**
 * @param $data
 * @return mixed
 * hex数据BBC异或校验(多个hex数据进行校验)
 */
function hexOrArr($data)
{
    $result = $data[0];
    for ($i = 0; $i < count($data) - 1; $i++) {
        $result = hexOr($result, $data[$i + 1]);
    }
    return $result;
}


/**
 * @param $string
 * @param int $len
 * @return array
 * 字符串根据字节长度拆分为数组
 */
function mbStrSplit($string, $len = 1)
{
    $start = 0;
    $strlen = mb_strlen($string);
    while ($strlen) {
        $array[] = strtoupper(mb_substr($string, $start, $len, "utf8"));
        $string = mb_substr($string, $len, $strlen, "utf8");
        $strlen = mb_strlen($string);
    }
    return $array;
}
 


/**
 * @param $string
 * @param int $len
 * @return array
 * 字符串根据字节长度拆分为数组
 */
function mbStrSplit($string, $len = 1)
{
    $start = 0;
    $strlen = mb_strlen($string);
    while ($strlen) {
        $array[] = strtoupper(mb_substr($string, $start, $len, "utf8"));
        $string = mb_substr($string, $len, $strlen, "utf8");
        $strlen = mb_strlen($string);
    }
    return $array;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值