问题描述
对接一个硬件设备协议要求进行bcc校验,数据包是十六进制表示的,用php处理
实现方式
public static function dec2hex($data, $wordLength) {
return str_pad(dechex($data), $wordLength * 2, '0', STR_PAD_LEFT);
}
//十六进制数据生成bcc校验码(十六进制)
public static function bcc($data) {
$data = str_split($data, 2);
$length = count($data);
$result = intval($data[0], 16);
for($i=0; $i<$length-1; $i++) {
$result ^= intval($data[$i+1], 16);
}
return self::dec2hex($result, 1);
}