CRC-16 校验码计算
编码所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
算出文本的 CRC-16 校验值。CRC-16 在工业与嵌入式领域出现得比 CRC-32 还频繁 —— Modbus 报文末尾那两个字节、1-Wire 器件的 ROM 校验、蓝牙与 X.25 的帧校验,用的都是它。但它也是变体最多的一族:同一个 0x8005 或 0x1021 多项式,配上不同的初始值、是否按位反转、结果异或值,能派生出三十多个互不兼容的算法,而它们算出来的数字毫无关系。这里收录了最常用的九个,每一项都标注了用途与出处,切换前先看清对面系统用的是哪个 —— 这是 CRC 类工具最容易出错、也最难排查的地方。
功能
- 九个常用变体:ARC、Modbus、USB、MAXIM、CCITT-FALSE、XMODEM、KERMIT、X-25、DNP
- 每个变体标注用途 —— Modbus 报文、1-Wire 器件、X.25 帧各用哪一个
- 输出十六进制(可切大小写)或十进制
- 中文按 UTF-8 字节计算,与各语言实现一致
- 每个变体都用参数目录的检定串锚定,参数不会抄错
- 计算只在本机进行,内容不会上传
使用方法
- 把内容粘贴进输入框,结果实时出现
- 按对面系统选变体(如 Modbus 就选 CRC-16/MODBUS)
- 按需切换十六进制 / 十进制与大写
- 点「复制」取走校验值
常见问题
- 为什么 CRC-16 有这么多变体?
- 因为 CRC-16 的「16」只规定了校验值是 16 位,没规定别的。多项式选哪个、初始值填什么、输入字节要不要按位反转、结果要不要再异或一个常数 —— 这四个参数在历史上被各家厂商各自拍板,于是同一个名字下出现了几十个互不兼容的实现。ARC(也叫 IBM)是最早的那个,Modbus、USB、X-25 都是它在不同场合的变体。看名字记不住,所以这个工具每一项都标了用途。
- Modbus 用的是哪一个?
- CRC-16/MODBUS:多项式 0x8005、初始值 0xFFFF、输入输出都按位反转、结果不再异或。它在 Modbus RTU 报文里就是最后那两个字节,低字节在前。要注意 Modbus TCP 不用它(那层有以太网的校验),只有 RTU 和 ASCII 模式才需要手工算。
- 怎么知道对方系统用的是哪个变体?
- 三个办法,按可靠程度排:一是查协议文档,通常写明多项式与初始值;二是找一个已知的验证值 —— 最标准的检定输入是字符串 `123456789`,本工具每个变体算出来的结果都与 CRC 参数目录里登记的一致,你可以逐个试,哪个对上了就是它;三是看代码,`0xA001` 这个反射后的 0x8005 出现在源码里,基本就能确定是 ARC 系列。
- 为什么算出来的值和手册上的对不上?
- 最常见的原因有两个。一是变体选错了(见上一条)—— 同一个 0x8005,ARC 算出来是 BB3D,Modbus 是 4B37,MAXIM 是 44C2。二是字节范围搞错了:CRC 算的是字节流,如果你只把报文的数据段贴进来,而对方算的是「地址 + 功能码 + 数据」整帧,结果必然不同。确认两者的输入范围完全一致。
相关工具
CRC-32 校验
编码计算文本的 CRC-32 校验值,支持 IEEE、Castagnoli、Koopman 等六个常用变体,结果以十六进制或十进制输出,全部在本地完成。
Hex 转换
编码十六进制与文本互转:支持 0x、\x、空格、冒号等常见写法,中文按 UTF-8 逐字节还原,并给出字节数。全部在浏览器本地完成,内容不上传。
哈希计算
编码算出文本的 MD5、SHA-1、SHA-256 或 SHA-512 摘要,也可算老系统用的 MD4 与 MD2,中文按 UTF-8 字节计算。全部在本地完成。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。