LRC 校驗 縱向冗餘檢查 PHP版
發表於 : 2012-05-09 11:13:22
Longitudinal redundancy check
1.LRC是checksum用.應是針對(Data[]+ETX)作XOR的結果.
2.在將 (header data if need)+ Data[]+ETX+LRC +(tail data if need) 送到前端設備.
因 PHP 為自動型態,故要特別轉換型態後,再計算
1.LRC是checksum用.應是針對(Data[]+ETX)作XOR的結果.
代碼: 選擇全部
Data=Data[0];
for ( i=1; i < length; i++ ) Data = Data xor Data[i];
LRC=Data xor ETX;
因 PHP 為自動型態,故要特別轉換型態後,再計算
代碼: 選擇全部
function lrc($buffer){
foreach (str_split($buffer, 1) as $b)
{
$byteArr[] = $b;
}
$data = $byteArr[0];
for ($i = 1; $i < count($byteArr); $i++) {
$data = chr(ord($data) ^ ord($byteArr[$i]));
}
$lrc = ord($data) ^ 0x3;
return dechex($lrc);
}