當前位置:
首頁 >
php crc16校验算法,PHP串口通信中计算crc16校验码
發布時間:2025/3/20
48
豆豆
生活随笔
收集整理的這篇文章主要介紹了
php crc16校验算法,PHP串口通信中计算crc16校验码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近使用PHP開發串口通信業務,在發送485Modbus命令時,基本都要計算CRC16校驗碼。網上搜索了很多文章,很多都計算的不對。本文記錄搜索到的正確的計算方法。
代碼如下:/**
*?crc16計算
*?傳入字符串格式:001624180101
*?返回值格式:[高8位,低8位]
*/
function?crc16($string)
{
$string?=?pack('H*',?$string);
$crc?=?0xFFFF;
for?($x?=?0;?$x?
$crc?=?$crc?^?ord($string[$x]);
for?($y?=?0;?$y?
if?(($crc?&?0x0001)?==?0x0001)?{
$crc?=?(($crc?>>?1)?^?0xA001);
}?else?{
$crc?=?$crc?>>?1;
}
}
}
$high8?=?str_pad(dechex(floor($crc?/?256)),?2,?'0',?STR_PAD_LEFT);
$low8?=?str_pad(dechex($crc?%?256),?2,?'0',?STR_PAD_LEFT);
return?[$high8,?$low8];
}
計算方法返回crc16校驗碼的高8位和低8位結果數組,在實際開發中,需要根據具體的串口協議進行高低位組合。
總結
以上是生活随笔為你收集整理的php crc16校验算法,PHP串口通信中计算crc16校验码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 备份格式dmp解析,Ora
- 下一篇: php rss xml,php – 如