Calculateur de checksum XOR
Le calculateur de checksum XOR combine une liste ordonnée d’octets en une seule valeur d’intégrité sur 8 bits.
Lancer gratuitement
Saisissez des entiers de 0 à 255 pour obtenir le résultat en décimal, en hexadécimal et en binaire, accompagné d’une expression lisible. Ce contrôle est courant dans les messages série compacts, les commandes de systèmes embarqués, les formats anciens et les protocoles simples de type LRC, car il demande très peu de calcul. L’outil vous permet de vérifier des exemples, déboguer des trames, préparer des vecteurs de test et reproduire une spécification sans écrire de script ponctuel.
Méthode de calcul du checksum XOR
Le calcul part d’un accumulateur nul et applique l’opération OU exclusif bit à bit à chaque octet de la séquence. Pour chaque position, XOR produit un lorsque les deux bits comparés diffèrent et zéro lorsqu’ils sont identiques. Après répétition, il ne reste qu’un octet. Une valeur combinée deux fois s’annule, car x XOR x vaut zéro, tandis qu’une combinaison avec zéro laisse la valeur intacte. L’opération est associative et commutative : regrouper ou réordonner les octets choisis ne change donc pas le résultat, même si le protocole détermine toujours précisément les champs à inclure. Ce calculateur vérifie que chaque élément est un entier compris entre 0 et 255, parcourt la liste, puis présente la même valeur sous trois formes. Le décimal convient aux API générales, l’hexadécimal correspond aux captures de paquets et aux fiches techniques, et les huit chiffres binaires rendent chaque bit visible. L’expression renvoyée consigne tous les opérandes et le résultat hexadécimal final.
Sélectionnez les bons octets du message
L’arithmétique est simple, mais le choix de la bonne portion d’une trame provoque le plus souvent les écarts. Consultez la définition du protocole pour déterminer si le délimiteur initial, l’adresse, la commande, la longueur, la charge utile, le champ de checksum existant et le délimiteur final sont inclus. En général, l’octet de contrôle lui-même est exclu, mais les conventions diffèrent. Convertissez les octets hexadécimaux tels que 7E, 01 et A4 en valeurs entières avant l’envoi : ils deviennent 126, 1 et 164. N’envoyez pas de codes de caractères sauf si le protocole contrôle explicitement du texte encodé. Le caractère ASCII « 7 » correspond normalement à 55, tandis qu’un champ numérique de valeur sept correspond à 7. Les nombres sur plusieurs octets doivent aussi respecter l’ordre de transmission. Construisez la liste exactement comme elle circule, puis comparez le résultat hexadécimal à la trame ou à la documentation. Le nombre d’octets aide à repérer un champ oublié ou ajouté deux fois.
Ce que ce contrôle peut réellement prouver
Un checksum XOR convient lorsqu’un protocole exige un contrôle extrêmement rapide et spécifie déjà cet algorithme. Il détecte toute modification d’un seul bit et de nombreuses autres altérations accidentelles, ce qui le rend pratique pour diagnostiquer de courtes trames série et des appareils contraints. Il reste toutefois bien moins robuste qu’un CRC ou qu’un hash cryptographique. Deux erreurs identiques dans des octets différents peuvent s’annuler, une permutation ne change pas le résultat et un attaquant peut compenser volontairement une modification ailleurs. Considérez la sortie comme une valeur de compatibilité et de diagnostic, jamais comme une preuve d’authenticité ou une protection contre la falsification. Pour un nouveau protocole, préférez un CRC clairement défini contre les erreurs de transmission ou un code d’authentification de message si la sécurité compte. Pour des tests reproductibles, conservez la liste exacte et l’expression renvoyée dans votre fixture. Le navigateur utilise la même logique déterministe que l’API, et chaque appel automatisé coûte $0.002, ce qui garantit des résultats concordants.
Cas d’usage
Déboguer une trame série
Recalculez le checksum sur les champs prévus et comparez-le à l’octet reçu de l’appareil.
Créer des vecteurs de test
Produisez des résultats stables en décimal, hexadécimal et binaire pour le firmware, les pilotes et l’intégration.
Vérifier des commandes embarquées
Contrôlez un paquet avant émission et confirmez que les conversions et les champs suivent le manuel.
Questions fréquentes
Quelles valeurs pouvez-vous saisir ?
Saisissez un tableau non vide d’entiers de 0 à 255. Chaque entier représente exactement un octet.
L’ordre modifie-t-il le checksum XOR ?
Non. XOR est commutatif, mais conservez l’ordre de transmission lorsque vous documentez ou déboguez une trame.
Faut-il inclure l’octet de checksum ?
Suivez la spécification. La plupart des calculs l’excluent, mais certains traitent la trame complète et attendent un résidu défini.
Est-ce identique à un CRC ?
Non. Un CRC emploie une division polynomiale et détecte davantage de catégories d’erreurs. XOR est plus léger, mais plus faible.
Puis-je envoyer des chaînes hexadécimales ?
Le contrat accepte des octets entiers. Convertissez chaque octet hexadécimal en entier équivalent avant l’appel.
Quel est le coût d’un calcul par API ?
Chaque requête API coûte $0.002. Le calculateur du navigateur reste disponible pour les contrôles interactifs.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"bytes": [
72,
101,
108,
108,
111
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.xor_checksum",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_items | 65536 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |