Calculadora de checksum XOR
La calculadora de checksum XOR combina una lista ordenada de bytes en un único valor de integridad de 8 bits.
Ejecutar — gratis
Introduzca enteros de 0 a 255 y obtenga el resultado en formato decimal, hexadecimal y binario, junto con una expresión legible del cálculo. Estas sumas son habituales en mensajes serie compactos, órdenes para dispositivos embebidos, formatos heredados y protocolos sencillos de tipo LRC porque exigen muy poco procesamiento. La herramienta sirve para revisar ejemplos, depurar tramas, preparar vectores de prueba y reproducir una especificación sin escribir un script específico.
Cómo se calcula un checksum XOR
El cálculo comienza con un acumulador a cero y aplica la operación OR exclusivo bit a bit a cada byte de la secuencia. En cada posición, XOR produce uno cuando los dos bits comparados son distintos y cero cuando coinciden. Al repetir la operación queda un solo byte. Un valor combinado consigo mismo se cancela porque x XOR x es cero, mientras que combinarlo con cero no lo modifica. La operación es asociativa y conmutativa, por lo que agrupar o reordenar los bytes elegidos no cambia el resultado, aunque el protocolo sí determina qué campos deben participar. Esta calculadora comprueba que cada elemento sea un entero entre 0 y 255, recorre la lista y presenta el mismo valor de tres maneras. El decimal resulta práctico para API generales; el hexadecimal encaja con volcados de paquetes y fichas técnicas; y los ocho dígitos binarios permiten examinar cada bit. La expresión devuelta conserva los operandos y el checksum hexadecimal final para facilitar la auditoría.
Seleccione los bytes correctos del mensaje
La aritmética es sencilla, pero escoger la parte correcta de una trama suele causar discrepancias. Consulte la definición del protocolo para saber si debe incluir el delimitador inicial, la dirección, el comando, la longitud, la carga útil, el campo de checksum existente y el delimitador final. Normalmente se excluye el propio byte de comprobación, pero las convenciones varían. Convierta octetos hexadecimales como 7E, 01 y A4 a enteros antes de enviarlos: corresponden a 126, 1 y 164. No envíe códigos de caracteres salvo que el protocolo compruebe texto codificado. El carácter ASCII “7” suele ser el byte 55, mientras que un campo numérico de valor siete es 7; producen resultados diferentes. Los números multibyte también requieren el orden correcto de transmisión, ya sea primero el byte alto o el bajo. Construya la lista exactamente como circula por el cable y compare el hexadecimal obtenido con la trama o el manual. El recuento ayuda a detectar campos omitidos o duplicados.
Qué puede demostrar esta comprobación
Un checksum XOR es útil cuando un protocolo necesita una comprobación muy rápida y su especificación ya exige este algoritmo. Detecta cualquier cambio de un solo bit y muchas otras alteraciones accidentales, por lo que sirve para diagnosticar tramas serie cortas y dispositivos limitados. Sin embargo, es mucho más débil que un CRC o un hash criptográfico. Dos errores iguales en bytes diferentes pueden cancelarse, el orden no afecta al resultado y un atacante puede modificar datos y compensar el cambio en otra posición. Considere la salida como un valor de compatibilidad y diagnóstico, no como prueba de autenticidad ni protección contra manipulaciones. Si diseña un protocolo nuevo, valore un CRC bien definido para errores de transmisión o un código de autenticación de mensajes cuando la seguridad importe. Para pruebas repetibles, guarde la lista exacta y la expresión devuelta en el fixture. El navegador ejecuta la misma lógica determinista que la API, y las llamadas automatizadas cuestan $0.002 cada una, de modo que las comprobaciones interactivas y las canalizaciones producen el mismo valor.
Qué puede hacer con ella
Depurar una trama serie
Recalcule el checksum sobre los campos definidos y compárelo con el byte recibido del dispositivo.
Crear vectores de prueba
Genere resultados estables en decimal, hexadecimal y binario para fixtures de firmware, controladores e integración.
Verificar comandos embebidos
Revise un paquete antes de transmitirlo y confirme que la conversión y los campos coinciden con el manual.
Preguntas frecuentes
¿Qué valores puedo introducir?
Introduzca un array no vacío de enteros entre 0 y 255. Cada entero representa exactamente un byte.
¿El orden afecta al checksum XOR?
No. XOR es conmutativo, aunque conviene conservar el orden de transmisión al documentar y depurar una trama.
¿Debo incluir el propio byte de checksum?
Siga la especificación. La mayoría lo excluye, pero algunas verificaciones procesan la trama completa y esperan un residuo definido.
¿Es lo mismo que un CRC?
No. Un CRC emplea división polinómica y detecta más clases de errores. XOR es más ligero, pero bastante más débil.
¿Puedo enviar cadenas hexadecimales?
El contrato acepta bytes enteros. Convierta cada octeto hexadecimal a su entero equivalente antes de llamar a la calculadora.
¿Cuánto cuesta un cálculo por API?
Cada solicitud por API cuesta $0.002. La calculadora del navegador está disponible para comprobaciones interactivas.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/elec/xor-checksum \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":[72,101,108,108,111]}'const res = await fetch("https://api.kit.forhosting.com/elec/xor-checksum", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bytes": [
72,
101,
108,
108,
111
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/xor-checksum",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bytes": [
72,
101,
108,
108,
111
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/xor-checksum", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bytes":[72,101,108,108,111]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bytes":[72,101,108,108,111]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/xor-checksum", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"bytes": [
72,
101,
108,
108,
111
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.xor_checksum",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_items | 65536 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |