Calculadora de checksum
Pega los bytes de una trama de un protocolo serie o embebido en hex, decimal o texto ASCII y obtén todos los checksums simples habituales a la vez, con el que usa tu protocolo mostrado en grande y calculado paso a paso.
Última actualización:
Hex: 01 03 0A, 0x01,0x03 o 01030A. ASCII: usa \r \n \t \0 y \xHH para los bytes de control.
p. ej. 1 para excluir un byte de inicio STX o ':'
p. ej. excluir un checksum existente o ETX
Cómo usar Calculadora de checksum
- Elige el formato de entrada: bytes hex, texto ASCII, bytes decimales o sentencias NMEA.
- Elige el checksum que usa tu protocolo como resultado principal.
- Pega los datos y, si hace falta, omite los bytes de trama al inicio o al final.
- Haz clic en Calcular (los resultados también se actualizan mientras escribes).
- Compara el resultado con el valor de tu dispositivo usando la tabla de bytes y los totales acumulados.
Comparación de checksums simples
| Checksum | Fórmula | Tamaño | Uso típico |
|---|---|---|---|
| Suma de 8 bits | suma de bytes mod 256 | 1 byte | Dispositivos serie simples; Intel HEX usa su complemento a dos |
| Complemento a dos (LRC) | (256 − suma mod 256) mod 256 | 1 byte | Modbus ASCII, registros Intel HEX |
| Complemento a uno | 0xFF − (suma mod 256) | 1 byte | Algunos protocolos de sensores y de RC |
| XOR / BCC | b1 ⊕ b2 ⊕ … ⊕ bn | 1 byte | Lectores de tarjetas, enlaces de PLC e industriales, muchas tramas STX…ETX |
| NMEA 0183 | XOR de los caracteres entre $ y * | 2 caracteres hex | Receptores GPS, electrónica marina |
| Fletcher-16 | dos sumas acumuladas mod 255 | 2 bytes | Enlaces ligeros donde importan los errores de orden |
| Checksum de Internet | complemento a uno de la suma de palabras de 16 bits | 2 bytes | Cabeceras IPv4, ICMP, UDP y TCP |
| Adler-32 | dos sumas mod 65521 | 4 bytes | Flujos de datos zlib |
Ejemplo resuelto: LRC de Modbus ASCII
Bytes del mensaje 11 03 00 6B 00 03: 0x11 + 0x03 + 0x00 + 0x6B + 0x00 + 0x03 = 0x82. El complemento a dos es 0x100 − 0x82 = 0x7E, así que la trama ASCII es :1103006B00037E seguida de CR LF. El receptor suma todos los bytes incluido 0x7E y obtiene 0x00.
Consejos para depurar un checksum
- La mayoría de las discrepancias vienen del rango: ¿se incluye el byte de inicio (STX, ':' o '$')? ¿Se calcula el checksum antes o después del escapado o de la codificación ASCII?
- En protocolos ASCII-hex como Modbus ASCII, calcula sobre los bytes decodificados (11 03 …), no sobre los caracteres "1", "1", "0", "3".
- Los checksums de dos bytes pueden enviarse con el byte alto primero o el byte bajo primero. Si el tuyo parece correcto pero invertido, consulta el Conversor de endianness.
- Si tu protocolo indica un polinomio (0x8005, 0x1021, 0x04C11DB7), usa un CRC, no un checksum simple.
Preguntas frecuentes
¿Qué es un checksum de 8 bits?
Suma todos los bytes y conserva solo los 8 bits más bajos (la suma módulo 256). Muchos protocolos envían esta suma, su complemento a dos o su complemento a uno como último byte de un mensaje.
¿Cómo se calcula el LRC de Modbus ASCII?
Suma los bytes del mensaje (dirección, código de función y datos, sin los dos puntos ni CR LF) módulo 256 y luego toma el complemento a dos: (256 − suma) mod 256. Para 11 03 00 6B 00 03 la suma es 0x82, así que el LRC es 0x7E.
¿Qué diferencia hay entre LRC y BCC?
Ambos nombres se usan con poca precisión. BCC (block check character, carácter de verificación de bloque) suele ser el XOR de todos los bytes. LRC puede significar ese mismo XOR o, como en Modbus ASCII, el complemento a dos de la suma de 8 bits. Consulta la documentación de tu protocolo para saber a cuál se refiere.
¿Cómo calculo un checksum NMEA?
Haz XOR de los códigos ASCII de todos los caracteres entre el $ (o !) y el asterisco, y escribe el resultado como dos dígitos hex en mayúsculas después del asterisco, por ejemplo *47.
¿Por qué los receptores suman el checksum a los datos?
Con un checksum en complemento a dos, la suma de todos los bytes incluido el checksum es 0 módulo 256; con XOR, el XOR de todo es 0; con complemento a uno, la suma es 0xFF. Comprobar esa constante es una forma rápida de verificar una trama.
¿Un checksum simple es tan bueno como un CRC?
No. Las sumas y el XOR no detectan errores como bytes reordenados y algunos errores de varios bits. Un CRC detecta muchos más patrones de error, por eso la mayoría de los protocolos más recientes usan CRC-16 o CRC-32.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.