Decodificatore di bitmask
Con read (1), write (2), execute (4) e admin (8), il valore 13 si decodifica in read, execute e admin, senza alcun resto inspiegato. Inserisca il numero memorizzato e il suo elenco di bit con nome per vedere quali permessi o opzioni sono attivi. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 13
- Flag attivi
- read, execute, admin
- Bit sconosciuti
- 0
Il decodificatore di flag da bitmask trasforma un intero compatto nei nomi dei permessi, delle funzionalità, degli stati o delle opzioni rappresentati. 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.
Come un solo numero conserva più opzioni
Una maschera di bit raccoglie molte impostazioni sì o no in un unico intero. Ogni opzione occupa una posizione binaria che vale una potenza di due: 1, 2, 4, 8, 16 e così via. Poiché queste posizioni non si sovrappongono mai, sommare i valori delle opzioni attive dà un totale unico, che si può poi scomporre. Il decodificatore controlla ogni nome del suo elenco per vedere se la sua posizione è presente nel valore memorizzato. Il 13, per esempio, è 8 più 4 più 1, quindi con read a 1, execute a 4 e admin a 8 questi tre risultano attivi, nell'ordine in cui lei li ha dichiarati. Un valore zero è valido e significa che nessuna opzione è attiva.
Che cosa dice il resto e gli errori più comuni
La parte del numero che il suo elenco non spiega viene indicata a parte invece di essere scartata. Un resto pari a zero significa che le sue definizioni coprono l'intero valore; altrimenti spesso si tratta di un flag aggiunto sul server, di un'opzione interna lasciata fuori di proposito o di elenchi di versioni diverse. Gli errori tipici sono dare a un flag un valore che non è una potenza di due, come 3, o riusare lo stesso bit per due nomi: entrambi vengono rifiutati con un messaggio chiaro invece di produrre un elenco plausibile ma sbagliato. I nomi vengono ripuliti dagli spazi ai bordi e devono essere unici.
Descriva la maschera con bit denominati esplicitamente
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. 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.
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.
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.
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.
Perché ogni flag deve essere una potenza di due?
Perché ogni potenza di due, 1, 2, 4, 8, 16 e così via, occupa una posizione binaria tutta sua, così i flag si sommano senza sovrapporsi. Per lo stesso motivo ogni bit e ogni nome devono essere unici, altrimenti la risposta sarebbe ambigua.
Che cosa significa un valore avanzato?
È la parte del numero che il suo elenco non spiega. Decodificando 13 solo con read (1), write (2) ed execute (4) avanzano 8. Spesso indica un flag nuovo, un'opzione interna omessa di proposito o due versioni diverse dell'elenco.
Conta l'ordine del mio elenco di flag?
Solo per la visualizzazione. Le definizioni possono stare in qualsiasi ordine e i nomi attivi tornano nell'ordine in cui lei li ha dichiarati, così la sua interfaccia mantiene l'ordine preferito invece di un ordinamento numerico.
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/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. |
Note tecniche
È 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. 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.
Interpreti i flag attivi e i bit sconosciuti
Per ogni definizione, il decodificatore verifica se la relativa posizione binaria è presente in value. Rendere visibile il residuo è più sicuro che perdere informazioni. Il valore originale viene restituito invariato, così registri e controlli successivi mantengono una provenienza esatta. 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. 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.
Utilizzi una decodifica deterministica per permessi e opzioni
Questa capacità rende leggibili tali campi al confine di un’integrazione. Evita inoltre gli operatori bit per bit JavaScript con segno a 32 bit, gestendo esattamente maschere molto superiori a 32 bit. 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. 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. Browser e API condividono la medesima libreria. L’uso interattivo è gratuito, mentre ogni attività API riuscita costa $0.002.
Casi di integrazione
Esamini opzioni di API e protocolli
Decodifichi valori combinati provenienti da un’integrazione, conservando i bit non dichiarati come avviso di variazione dello schema.
Domande tecniche
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.
Quanto costa l’API?
Ogni attività API completata usa il prezzo base pubblicato di $0.002. Può anche eseguire gratuitamente il decodificatore nel browser.