Inicio › Herramientas para desarrolladores › Calculadora de checksum

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

Introduce tus valores para ver el resultado.
Publicidad
Publicidad

Cómo usar Calculadora de checksum

  1. Elige el formato de entrada: bytes hex, texto ASCII, bytes decimales o sentencias NMEA.
  2. Elige el checksum que usa tu protocolo como resultado principal.
  3. Pega los datos y, si hace falta, omite los bytes de trama al inicio o al final.
  4. Haz clic en Calcular (los resultados también se actualizan mientras escribes).
  5. Compara el resultado con el valor de tu dispositivo usando la tabla de bytes y los totales acumulados.

Comparación de checksums simples

ChecksumFórmulaTamañoUso típico
Suma de 8 bitssuma de bytes mod 2561 byteDispositivos serie simples; Intel HEX usa su complemento a dos
Complemento a dos (LRC)(256 − suma mod 256) mod 2561 byteModbus ASCII, registros Intel HEX
Complemento a uno0xFF − (suma mod 256)1 byteAlgunos protocolos de sensores y de RC
XOR / BCCb1 ⊕ b2 ⊕ … ⊕ bn1 byteLectores de tarjetas, enlaces de PLC e industriales, muchas tramas STX…ETX
NMEA 0183XOR de los caracteres entre $ y *2 caracteres hexReceptores GPS, electrónica marina
Fletcher-16dos sumas acumuladas mod 2552 bytesEnlaces ligeros donde importan los errores de orden
Checksum de Internetcomplemento a uno de la suma de palabras de 16 bits2 bytesCabeceras IPv4, ICMP, UDP y TCP
Adler-32dos sumas mod 655214 bytesFlujos 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.

Herramientas relacionadas

Ver todas las de Codificadores, hashes y criptografía →