Décodeur de masque de bits
Le décodeur de drapeaux transforme un entier compact en noms de permissions, de fonctions, d’états ou d’options.
Lancer gratuitement
Indiquez la valeur enregistrée et une liste associant chaque nom à un bit dont la valeur est une puissance de deux. Le résultat conserve l’ordre de votre déclaration, renvoie tous les noms actifs et signale la partie correspondant à des bits non définis. Cet outil facilite la lecture des champs de base de données, charges utiles d’API, valeurs de protocole, réglages d’accès et configurations anciennes, sans conversion binaire manuelle ni dépendance aux particularités des opérateurs d’un langage.
Décrivez le masque avec des bits nommés explicitement
Commencez par l’entier positif ou nul du champ value, puis ajoutez une ligne dans flags pour chaque signification définie par votre système. Chaque ligne contient un nom et un bit. Le bit doit être une puissance de deux strictement positive : 1, 2, 4, 8, 16, etc. Ces valeurs représentent des positions binaires indépendantes et peuvent donc être combinées sans risque par addition ou avec l’opérateur OR bit à bit. Les espaces extérieurs des noms sont supprimés et chaque nom doit être unique. Les valeurs de bit doivent également être distinctes, car deux libellés pour une même position rendraient la réponse ambiguë. Vous pouvez classer les définitions comme vous le souhaitez : active_flags respecte cet ordre afin que votre application conserve sa présentation habituelle. Zéro constitue un masque valide et produit un tableau active_flags vide. Les entiers JavaScript exacts de 0 à 9,007,199,254,740,991 et les bits individuels jusqu’à 4,503,599,627,370,496 sont acceptés. Tout enregistrement non valide échoue explicitement au lieu d’être converti silencieusement en une liste plausible mais erronée.
Interprétez les drapeaux actifs et les bits inconnus
Pour chaque définition, le décodeur vérifie si la position binaire correspondante figure dans value. Si elle est présente, son nom est ajouté à active_flags et sa valeur alimente le total actif déclaré. La réponse comprend aussi unknown_bits, obtenu en retirant de la valeur initiale tous les bits actifs déclarés. Lorsque unknown_bits vaut zéro, vos définitions expliquent entièrement le masque. Une valeur non nulle n’est pas forcément une erreur : elle peut révéler un nouveau drapeau ajouté côté serveur, une option interne volontairement exclue ou un décalage entre versions de schéma. Afficher ce reliquat évite de perdre une information importante. Ainsi, avec value égal à 13 et les bits read=1, write=2, execute=4 et admin=8, les noms actifs sont read, execute et admin, tandis que unknown_bits vaut zéro. Si le bit 8 était absent des définitions, la même entrée renverrait read et execute avec unknown_bits égal à 8. La valeur d’origine est restituée telle quelle afin de préserver une provenance exacte dans les journaux et contrôles ultérieurs.
Intégrez un décodage déterministe aux permissions et options
Les masques de bits sont fréquents dans les colonnes de base de données, modes de système d’exploitation, interrupteurs de fonctionnalités, registres d’appareil, états de jeu et réponses d’API tierces, car ils regroupent de nombreux booléens dans un entier. Cette capacité rend ces champs compréhensibles à la frontière d’une intégration. Conservez les définitions avec la version du schéma, appelez le décodeur à l’arrivée de chaque enregistrement et exploitez active_flags pour l’affichage, le filtrage ou les contrôles de règles. Surveillez unknown_bits comme indicateur de compatibilité : un reliquat non nul peut déclencher une vérification avant qu’un logiciel ne traite une nouvelle permission comme une ancienne valeur ordinaire. L’algorithme effectue des calculs bornés sur 256 définitions au maximum et n’utilise ni réseau, ni horloge, ni paramètres régionaux, ni hasard, ni état mutable ; un JSON identique donne toujours le même JSON. Il évite aussi les opérateurs JavaScript signés sur 32 bits et traite donc exactement des masques bien plus grands. Le navigateur et l’API partagent la même bibliothèque. L’essai interactif est gratuit et chaque tâche automatisée réussie coûte $0.002.
Cas d’usage
Expliquez les champs de contrôle d’accès
Transformez un masque de permissions enregistré en noms lisibles avant son affichage dans une console d’administration ou un export d’audit.
Examinez les options d’API et de protocoles
Décodez les valeurs combinées d’une intégration tout en conservant les bits non déclarés comme alerte de dérive du schéma.
Migrez une configuration ancienne
Développez des réglages numériques compacts en booléens ou libellés explicites pendant la migration d’une application ou d’une base.
Questions fréquentes
Quelles valeurs puis-je décoder ?
Tout entier JavaScript sûr positif ou nul. Chaque bit déclaré doit être une puissance de deux positive et unique.
Que représente unknown_bits ?
Il s’agit de la partie active de value qui ne correspond à aucune définition fournie. Zéro signifie que les déclarations couvrent tout le masque.
L’ordre des drapeaux est-il conservé ?
Oui. active_flags suit l’ordre des définitions reçues, quelle que soit la valeur numérique de leurs bits.
Les noms peuvent-ils contenir des espaces ?
Oui. Ce sont des chaînes dont les espaces extérieurs sont retirés. Les noms vides ou les doublons ainsi normalisés sont refusés.
Quel est le tarif de l’API ?
Chaque tâche d’API réussie applique le prix de base publié de $0.002. Vous pouvez aussi utiliser gratuitement le décodeur dans le navigateur.
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/dev/bitmask-flags-decode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":13,"flags":[{"name":"read","bit":1},{"name":"write","bit":2},{"name":"execute","bit":4},{"name":"admin","bit":8}]}'const res = await fetch("https://api.kit.forhosting.com/dev/bitmask-flags-decode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 13,
"flags": [
{
"name": "read",
"bit": 1
},
{
"name": "write",
"bit": 2
},
{
"name": "execute",
"bit": 4
},
{
"name": "admin",
"bit": 8
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/bitmask-flags-decode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 13,
"flags": [
{
"name": "read",
"bit": 1
},
{
"name": "write",
"bit": 2
},
{
"name": "execute",
"bit": 4
},
{
"name": "admin",
"bit": 8
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/bitmask-flags-decode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":13,"flags":[{"name":"read","bit":1},{"name":"write","bit":2},{"name":"execute","bit":4},{"name":"admin","bit":8}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":13,"flags":[{"name":"read","bit":1},{"name":"write","bit":2},{"name":"execute","bit":4},{"name":"admin","bit":8}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/bitmask-flags-decode", 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
{
"value": 13,
"flags": [
{
"name": "read",
"bit": 1
},
{
"name": "write",
"bit": 2
},
{
"name": "execute",
"bit": 4
},
{
"name": "admin",
"bit": 8
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bitmask_flags_decode",
"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_flags | 256 |
max_safe_integer | 9007199254740991 |
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. |