SUM/XOR/LRC 校验和计算器

输入 HEX 字节或 UTF-8 文本,同时计算 SUM-8、SUM-16、XOR-8 和 LRC-8。

所有计算均在浏览器内完成,输入内容不会上传。

输入格式

支持连续 HEX 或完整字节组,用空格、逗号、分号分隔,可带 0x 前缀。 最多 64 KiB 数据。

校验和结果

参与计算:4 字节

输入字节预览(HEX)

01 02 03 04

SUM-8

逐字节相加,保留低 8 位。

HEX
0x0A
十进制
10
二进制
00001010

SUM-16

逐字节相加,保留低 16 位。

HEX
0x000A
十进制
10
二进制
0000000000001010

XOR-8

从 0 开始,逐字节异或。

HEX
0x04
十进制
4
二进制
00000100

LRC-8

取 SUM-8 的二进制补码:(256 − SUM-8) mod 256。

HEX
0xF6
十进制
246
二进制
11110110

LRC-8 使用 Modbus ASCII 的 8 位累加和补码定义。仅计算输入的字节,不自动识别或排除报文头尾。

如何计算校验和

选择 HEX 字节或 UTF-8 文本后输入数据,四种结果会自动更新。HEX 支持 01020304、01 02 03 04、0x01, 0x02 等完整字节写法;不接受单个半字节、负号、冒号或完整的 Modbus ASCII 报文。切换输入格式会重新解释当前内容,不会自动转换它。

四种算法有什么区别?

  • SUM-8:字节累加和对 256 取模。
  • SUM-16:仍然逐字节相加,再对 65536 取模。不是将相邻字节组合成 16 位字,也不是 Internet checksum。
  • XOR-8:从 0 开始逐字节异或。一些协议把这种运算称为 BCC,但应以设备协议为准。
  • LRC-8:本页采用 Modbus ASCII 的定义,取 SUM-8 的二进制补码。其他协议里的 LRC 可能采用不同定义。

对于 HEX 01 02 03 04,结果如下:

SUM-8 SUM-16 XOR-8 LRC-8
0x0A 0x000A 0x04 0xF6

Modbus ASCII LRC 示例

点击页面的 Modbus 示例,输入为 01 03 00 00 00 0A,LRC-8 为 0xF2。这里计算的是 HEX 表示的 6 个字节,不是这些十六进制字符的 UTF-8 编码。

生成 LRC 时,只输入地址、功能码和数据字节,排除起始冒号、已有 LRC 和结尾 CR/LF。将结果 F2 追加后,报文为 :01030000000AF2,其后再跟 CR/LF。规范参见 Modbus Serial Line Guide,§6.2.1。

若要检查已有 LRC,可在 HEX 模式输入数据与末尾 LRC,例如 01 03 00 00 00 0A F2,SUM-8 应为 0x00。这仅检查累加和关系,不验证完整报文格式。

为什么文本与 HEX 的结果不同?

文本 01 的 UTF-8 字节为 30 31,而 HEX 01 只有一个字节。文本模式保留空格和换行,非 ASCII 字符可能占多个字节;页面预览可以帮助确认输入。最多处理 64 KiB,预览仅显示前 32 字节,但结果始终基于全部数据。

这些简单校验算法用于发现部分传输错误,不能防篡改。CRC、MD5、SHA 等算法需使用页面上方链接的对应工具。