Calcolatore checksum XOR
Trasformi i byte di una trama nel suo checksum XOR di un byte: un messaggio di cinque byte dà 66, cioè 0x42 in esadecimale e 01000010 in binario. Inserisca valori da 0 a 255 nell'ordine di invio e confronti il risultato con la trama. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Byte
- 72, 101, 108, 108, 111
- Checksum
- 66
- Checksum (hex)
- 0x42
- Checksum in binario
- 01000010
- Numero di byte
- 5
Il calcolatore di checksum XOR combina un elenco ordinato di byte in un unico valore di integrità a 8 bit. Inserisca numeri interi da 0 a 255 per ricevere il risultato in formato decimale, esadecimale e binario, insieme a un’espressione leggibile del calcolo. Questo controllo è comune nei messaggi seriali compatti, nei comandi per dispositivi embedded, nei formati legacy e nei protocolli semplici di tipo LRC, perché richiede pochissima elaborazione. Lo strumento consente di verificare esempi, analizzare frame, preparare vettori di test e riprodurre una specifica senza scrivere uno script occasionale.
Come viene calcolato il checksum XOR
Il calcolo parte da un accumulatore impostato a zero e applica l’OR esclusivo bit per bit a ogni byte della sequenza. Per ciascuna posizione XOR restituisce uno quando i bit confrontati sono diversi e zero quando coincidono. Ripetendo l’operazione rimane un solo byte.
Lo stesso valore applicato due volte si annulla, perché x XOR x vale zero, mentre XOR con zero lascia il valore invariato. L’operazione è associativa e commutativa: raggruppare o riordinare i byte selezionati non cambia il risultato, anche se è sempre il protocollo a stabilire quali campi includere. Il calcolatore verifica che ogni elemento sia un intero tra 0 e 255, esegue un passaggio sulla lista e presenta lo stesso risultato in tre forme.
L’espressione restituita registra gli operandi e il checksum esadecimale finale.
Scelga i byte corretti del messaggio
L’aritmetica è semplice, ma la selezione della parte giusta di un frame è la causa più frequente di risultati discordanti. Di solito il byte del checksum è escluso, ma le convenzioni cambiano. Converta ottetti esadecimali come 7E, 01 e A4 nei rispettivi interi prima dell’invio: diventano 126, 1 e 164.
Non invii codici di caratteri se il protocollo non verifica esplicitamente testo codificato. Il carattere ASCII “7” normalmente corrisponde al byte 55, mentre un campo numerico con valore sette corrisponde a 7. Anche i numeri multibyte richiedono il corretto ordine di trasmissione, determinato dall’endianness.
Componga la lista esattamente come viene trasmessa e confronti il risultato esadecimale con il frame o la documentazione. Il conteggio dei byte aiuta a individuare campi omessi o duplicati.
Che cosa può dimostrare questo controllo
Un checksum XOR è utile quando un protocollo richiede un controllo estremamente rapido e specifica già questo algoritmo. Rileva qualsiasi modifica di un singolo bit e molte altre alterazioni accidentali, quindi è pratico per diagnosticare brevi frame seriali e dispositivi con risorse limitate. Tuttavia è molto più debole di un CRC o di un hash crittografico.
Due errori uguali in byte diversi possono annullarsi, il riordino non modifica il risultato e un attaccante può compensare intenzionalmente una variazione altrove. Tratti l’output come valore di compatibilità e diagnostica, non come prova di autenticità o protezione da manomissioni. Se progetta un nuovo protocollo, consideri un CRC ben specificato contro gli errori di trasmissione o un codice di autenticazione dei messaggi quando conta la sicurezza.
Casi d'uso
Analizzare un frame seriale
Ricalcoli il checksum sui campi previsti e lo confronti con il byte ricevuto dal dispositivo.
Creare vettori di test
Generi risultati stabili decimali, esadecimali e binari per firmware, driver e test di integrazione.
Verificare comandi embedded
Controlli un pacchetto prima della trasmissione e confermi conversioni e campi rispetto al manuale.
Domande frequenti
Quali valori può inserire?
Inserisca un array non vuoto di interi da 0 a 255. Ogni intero rappresenta esattamente un byte.
L’ordine influisce sul checksum XOR?
No. XOR è commutativo, ma conservi l’ordine di trasmissione quando documenta o analizza un frame.
Deve includere il byte del checksum?
Segua la specifica. Molti calcoli lo escludono, ma alcune verifiche elaborano l’intero frame e attendono un residuo definito.
È uguale a un CRC?
No. Un CRC usa la divisione polinomiale e rileva più categorie di errori. XOR è più leggero, ma molto più debole.
Può usare stringhe esadecimali?
Il contratto accetta byte interi. Converta ogni ottetto esadecimale nel relativo intero prima della chiamata.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"bytes": [
72,
101,
108,
108,
111
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.xor_checksum",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_items | 65536 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Come viene calcolato il checksum XOR
Il decimale è utile nelle API generiche, l’esadecimale corrisponde ai dump di pacchetti e ai datasheet, mentre gli otto caratteri binari rendono visibile ogni bit.
Scelga i byte corretti del messaggio
Legga la definizione del protocollo per capire se includere delimitatore iniziale, indirizzo, comando, lunghezza, payload, campo checksum esistente e delimitatore finale.
Che cosa può dimostrare questo controllo
Il browser esegue la stessa logica deterministica dell’API e ogni chiamata automatizzata costa $0.002, così i controlli interattivi e le pipeline producono valori identici.
Domande tecniche
Quanto costa un calcolo tramite API?
Ogni richiesta API costa $0.002. Il calcolatore nel browser è disponibile per controlli interattivi.