Decodificatore di bitmask
Il decodificatore di flag da bitmask trasforma un intero compatto nei nomi dei permessi, delle funzionalità, degli stati o delle opzioni rappresentati.
Esegui gratis nel browser
Inserisca il valore memorizzato e un elenco che associ ogni nome a un bit con valore pari a una potenza di due. Il risultato mantiene l’ordine dichiarato, restituisce tutti i nomi attivi e segnala l’eventuale valore residuo dovuto a bit non definiti. È utile per leggere campi di database, payload API, valori di protocolli, impostazioni di accesso e configurazioni legacy senza convertire manualmente i numeri in binario o dipendere dal comportamento specifico degli operatori di un linguaggio.
Descriva la maschera con bit denominati esplicitamente
Inizi con l’intero non negativo nel campo value, quindi aggiunga una riga in flags per ogni significato definito dal Suo sistema. Ogni riga contiene un nome e un bit. Il bit deve essere una potenza di due positiva: 1, 2, 4, 8, 16 e così via. Questi valori indicano posizioni binarie indipendenti e possono essere combinati in sicurezza tramite addizione oppure OR bit per bit. Gli spazi esterni dei nomi vengono rimossi e ogni nome deve essere univoco; anche i valori dei bit devono essere distinti, perché due etichette per la stessa posizione renderebbero ambiguo il risultato. Le definizioni possono comparire in qualsiasi ordine: active_flags segue la sequenza fornita, consentendo all’applicazione di conservare la presentazione desiderata. Zero è una maschera valida e produce un array active_flags vuoto. Sono accettati interi JavaScript esatti non negativi fino a 9,007,199,254,740,991 e singoli bit fino a 4,503,599,627,370,496. Un record non valido genera un errore esplicito, senza conversioni silenziose in elenchi di permessi plausibili ma errati.
Interpreti i flag attivi e i bit sconosciuti
Per ogni definizione, il decodificatore verifica se la relativa posizione binaria è presente in value. In caso affermativo, aggiunge il nome corrispondente ad active_flags e include il valore del bit nel totale attivo dichiarato. La risposta contiene inoltre unknown_bits, calcolato sottraendo dal valore originale tutti i bit attivi dichiarati. Se unknown_bits è zero, le definizioni fornite spiegano completamente la maschera. Un valore diverso da zero non è necessariamente un errore: può indicare un nuovo flag introdotto dal server, un’opzione interna esclusa intenzionalmente o una mancata corrispondenza tra versioni dello schema. Rendere visibile il residuo è più sicuro che perdere informazioni. Per esempio, con value pari a 13 e i bit read=1, write=2, execute=4 e admin=8, i nomi attivi sono read, execute e admin, mentre unknown_bits è zero. Se il bit 8 non fosse definito, lo stesso input restituirebbe read ed execute con unknown_bits pari a 8. Il valore originale viene restituito invariato, così registri e controlli successivi mantengono una provenienza esatta.
Utilizzi una decodifica deterministica per permessi e opzioni
Le bitmask sono frequenti nelle colonne dei database, nelle modalità dei sistemi operativi, negli interruttori di funzionalità, nei registri dei dispositivi, negli stati dei giochi e nelle risposte di API esterne, perché racchiudono molti valori booleani in un unico intero. Questa capacità rende leggibili tali campi al confine di un’integrazione. Conservi le definizioni insieme alla versione dello schema, richiami il decodificatore quando un record entra nel flusso e usi active_flags per visualizzazioni, filtri o controlli delle regole. Monitori unknown_bits come segnale di compatibilità: un residuo diverso da zero può inviare il record a revisione prima che il software scambi un nuovo permesso per un normale valore precedente. L’algoritmo esegue operazioni limitate su un massimo di 256 definizioni e non usa rete, orologio, impostazioni locali, casualità o stato mutabile; lo stesso JSON produce sempre lo stesso JSON. Evita inoltre gli operatori bit per bit JavaScript con segno a 32 bit, gestendo esattamente maschere molto superiori a 32 bit. Browser e API condividono la medesima libreria. L’uso interattivo è gratuito, mentre ogni attività API riuscita costa $0.002.
Casi d'uso
Spieghi i campi di controllo degli accessi
Trasformi una maschera di permessi memorizzata in nomi leggibili prima di mostrarla in un pannello amministrativo o in un’esportazione di audit.
Esamini opzioni di API e protocolli
Decodifichi valori combinati provenienti da un’integrazione, conservando i bit non dichiarati come avviso di variazione dello schema.
Migri configurazioni legacy
Espanda impostazioni numeriche compatte in booleani o etichette espliciti durante la migrazione di un database o di un’applicazione.
Domande frequenti
Quali valori posso decodificare?
Qualsiasi intero sicuro JavaScript non negativo. Ogni bit dichiarato deve essere una potenza di due positiva e univoca.
Che cosa indica unknown_bits?
È la parte attiva di value che non corrisponde ad alcuna definizione fornita. Zero indica che le dichiarazioni spiegano l’intera maschera.
L’ordine dei flag viene conservato?
Sì. active_flags segue l’ordine delle definizioni ricevute, indipendentemente dall’ordine numerico dei bit.
I nomi dei flag possono contenere spazi?
Sì. I nomi sono stringhe e gli spazi esterni vengono rimossi. I nomi vuoti o duplicati dopo la normalizzazione sono rifiutati.
Quanto costa l’API?
Ogni attività API completata usa il prezzo base pubblicato di $0.002. Può anche eseguire gratuitamente il decodificatore nel browser.
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/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)Esempio di richiesta
{
"value": 13,
"flags": [
{
"name": "read",
"bit": 1
},
{
"name": "write",
"bit": 2
},
{
"name": "execute",
"bit": 4
},
{
"name": "admin",
"bit": 8
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bitmask_flags_decode",
"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_flags | 256 |
max_safe_integer | 9007199254740991 |
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. |