Décodeur de masque de bits
Avec read (1), write (2), execute (4) et admin (8), la valeur 13 se décode en read, execute et admin, sans aucun reste inexpliqué. Saisissez le nombre enregistré et votre propre liste de bits nommés pour voir quelles permissions ou options sont actives. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- 13
- Indicateurs actifs
- read, execute, admin
- Bits inconnus
- 0
Le décodeur de drapeaux transforme un entier compact en noms de permissions, de fonctions, d’états ou d’options. 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.
Comment un seul nombre stocke plusieurs options
Un masque de bits regroupe de nombreux réglages oui ou non dans un seul entier. Chaque option occupe une position binaire qui vaut une puissance de deux : 1, 2, 4, 8, 16 et ainsi de suite. Comme ces positions ne se chevauchent jamais, additionner les valeurs des options actives donne un total unique, que l'on peut ensuite décomposer. Le décodeur vérifie chaque nom de votre liste pour savoir si sa position figure dans la valeur enregistrée. Le nombre 13, par exemple, vaut 8 plus 4 plus 1 : avec read à 1, execute à 4 et admin à 8, ces trois noms ressortent actifs, dans l'ordre où vous les avez déclarés. Une valeur nulle est valide et signifie qu'aucune option n'est active.
Ce que révèle le reste, et les erreurs courantes
La partie du nombre que votre liste n'explique pas est signalée à part au lieu d'être perdue. Un reste nul signifie que vos définitions couvrent toute la valeur ; sinon, il s'agit souvent d'un drapeau ajouté sur le serveur, d'une option interne laissée de côté exprès ou de listes issues de deux versions. Les erreurs typiques consistent à donner à un drapeau une valeur qui n'est pas une puissance de deux, comme 3, ou à réutiliser le même bit pour deux noms : les deux sont refusées avec un message clair au lieu de produire une liste plausible mais fausse. Les noms sont nettoyés de leurs espaces et doivent être uniques.
Décrivez le masque avec des bits nommés explicitement
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ë. 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.
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.
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.
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.
Pourquoi chaque drapeau doit-il être une puissance de deux ?
Parce que chaque puissance de deux, 1, 2, 4, 8, 16 et ainsi de suite, occupe sa propre position binaire : les drapeaux s'additionnent donc sans se chevaucher. Pour la même raison, chaque bit et chaque nom doivent être uniques, sinon la réponse serait ambiguë.
Que signifie un reste non nul ?
C'est la partie du nombre que votre liste n'explique pas. Décoder 13 avec seulement read (1), write (2) et execute (4) laisse un reste de 8. Cela signale souvent un nouveau drapeau, une option interne omise exprès ou deux versions différentes de la liste.
L'ordre de ma liste de drapeaux compte-t-il ?
Seulement pour l'affichage. Les définitions peuvent venir dans n'importe quel ordre, et les noms actifs reviennent dans l'ordre où vous les avez déclarés : votre interface garde ainsi son ordre préféré plutôt qu'un tri numérique.
Outils associés
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. |
Notes techniques
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. 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.
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. 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. La valeur d’origine est restituée telle quelle afin de préserver une provenance exacte dans les journaux et contrôles ultérieurs. 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. 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.
Intégrez un décodage déterministe aux permissions et options
Cette capacité rend ces champs compréhensibles à la frontière d’une intégration. Il évite aussi les opérateurs JavaScript signés sur 32 bits et traite donc exactement des masques bien plus grands. 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. 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. 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'intégration
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.
Questions techniques
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.
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.