CRC 通用校验计算工具
用法:选择 CRC 算法,输入十六进制数据,实时计算校验值。支持 Modbus、CCITT、IBM、DNP、CRC32 等 9 种工控常用算法。
全部在浏览器本地计算,不上传、不联网、不记录。
1 选择算法 + 输入数据
选择算法并输入数据后实时出结果
工控常用 CRC 算法速查
| 算法 | 多项式 | 初始值 | 反转 | 最终异或 | 典型应用 |
|---|---|---|---|---|---|
| CRC-16/MODBUS | 0x8005 | 0xFFFF | 是 | 0x0000 | Modbus RTU、大多数串口协议 |
| CRC-16/CCITT-FALSE | 0x1021 | 0xFFFF | 否 | 0x0000 | XMODEM、蓝牙、某些 RFID |
| CRC-16/XMODEM | 0x1021 | 0x0000 | 否 | 0x0000 | XMODEM 协议 |
| CRC-16/IBM | 0x8005 | 0x0000 | 是 | 0x0000 | Bisync、Modbus 早期变体 |
| CRC-16/DNP | 0x3D65 | 0x0000 | 是 | 0xFFFF | DNP3 协议(电力/水务) |
| CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | 是 | 0xFFFFFFFF | 以太网、ZIP、PNG、固件校验 |
常见问题
工控中最常用的 CRC 算法是哪个?
Modbus RTU 使用 CRC-16/MODBUS(初始值 0xFFFF,多项式 0x8005,输入输出均反转,最终不异或)。这是工控领域最常见的 CRC 算法,本工具默认选中它。
CRC-16/MODBUS 和 CRC-16/IBM 有什么区别?
两者多项式相同(0x8005),输入输出反转也相同,区别仅在初始值:MODBUS 初始值 0xFFFF,IBM(ARC)初始值 0x0000。对同一组数据,MODBUS 的结果通常和 IBM 不同。
什么是 refin / refout?为什么有的算法结果不一样?
refin 表示输入字节是否按位反转(reflected),refout 表示最终 CRC 值是否按位反转。Modbus 等大多数工控协议 refin=refout=true(LSB first),而 CCITT-FALSE 等算法 refin=refout=false(MSB first)。这是同一多项式算出不同结果的根本原因。
CRC32 用在什么工控场景?
CRC32 常用于工业以太网协议(如 EtherNet/IP、PROFINET 的某些层)、文件校验、固件升级包校验。工控现场更常见的是 CRC16(Modbus、Profibus、DNP3 等),CRC32 多用于数据量较大或可靠性要求更高的场景。