/**
* @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;
}