Decodificador de máscaras de bits
Con read (1), write (2), execute (4) y admin (8), el valor 13 se decodifica como read, execute y admin, sin ningún resto por explicar. Indique el número guardado y su propia lista de bits con nombre para ver qué permisos u opciones están activos. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Valor
- 13
- Indicadores activos
- read, execute, admin
- Bits desconocidos
- 0
El decodificador de banderas de máscara de bits convierte un entero compacto en los nombres de los permisos, funciones, estados u opciones que representa. Indique el valor almacenado y una lista que asocie cada nombre con un bit que sea potencia de dos. El resultado conserva el orden declarado, devuelve todos los nombres activos e informa de cualquier valor restante procedente de bits no definidos.
Cómo guarda un solo número varias opciones
Una máscara de bits reúne muchas opciones de sí o no en un único entero. Cada opción ocupa una posición binaria que vale una potencia de dos: 1, 2, 4, 8, 16 y así sucesivamente. Como esas posiciones nunca se solapan, sumar los valores de las opciones activas da un total único que después se puede descomponer. El decodificador revisa cada nombre de su lista para ver si su posición está presente en el valor guardado. El 13, por ejemplo, es 8 más 4 más 1, así que con read como 1, execute como 4 y admin como 8 esas tres aparecen activas, en el orden en que las declaró. Un valor de cero es válido y significa que no hay ninguna opción activa.
Lo que indica el resto y los errores habituales
La parte del número que su lista no explica se informa aparte en lugar de descartarse. Un resto de cero significa que sus definiciones cubren todo el valor; cualquier otro suele delatar una bandera añadida en el servidor, una opción interna que dejó fuera a propósito o listas de dos versiones distintas. Los errores típicos son dar a una bandera un valor que no es potencia de dos, como 3, o repetir el mismo bit para dos nombres: ambos se rechazan con un mensaje claro en lugar de producir una lista verosímil pero equivocada. Los nombres se recortan y deben ser únicos.
Describa la máscara con bits nombrados explícitamente
Cada fila contiene un nombre y un bit. El bit debe ser una potencia de dos positiva: 1, 2, 4, 8, 16 y así sucesivamente. Estos valores representan posiciones binarias independientes, por lo que pueden combinarse con seguridad mediante suma u OR bit a bit.
Los nombres se recortan y deben ser únicos; los valores de bit también deben ser únicos, pues dos etiquetas para la misma posición harían ambigua la respuesta. Se admiten enteros no negativos exactos de JavaScript hasta 9,007,199,254,740,991 y bits individuales hasta 4,503,599,627,370,496. Los registros inválidos fallan claramente en lugar de transformarse silenciosamente en una lista de permisos plausible pero incorrecta.
Qué puede hacer con ella
Explique campos de control de acceso
Convierta una máscara de permisos almacenada en nombres legibles antes de mostrarla en un panel administrativo o una exportación de auditoría.
Migre configuraciones heredadas
Expanda ajustes numéricos compactos a booleanos o etiquetas explícitos durante una migración de base de datos o aplicación.
Preguntas frecuentes
¿Qué valores puedo decodificar?
Cualquier entero seguro de JavaScript que no sea negativo. Cada bit declarado debe ser una potencia de dos positiva y única.
¿Los nombres pueden contener espacios?
Sí. Los nombres son cadenas y se elimina el espacio exterior. Se rechazan los nombres vacíos y los duplicados tras recortarlos.
¿Por qué cada bandera debe ser una potencia de dos?
Porque cada potencia de dos, 1, 2, 4, 8, 16 y así sucesivamente, ocupa su propia posición binaria, de modo que las banderas se suman sin solaparse. Por lo mismo, cada bit y cada nombre deben ser únicos, o la respuesta sería ambigua.
¿Qué significa que quede un resto?
Es la parte del número que su lista no explica. Si decodifica 13 solo con read (1), write (2) y execute (4), sobran 8. Suele indicar una bandera nueva, una opción interna omitida a propósito o versiones distintas de la lista.
¿Importa el orden de mi lista de banderas?
Solo para mostrarla. Las definiciones pueden ir en cualquier orden y los nombres activos se devuelven en el orden en que usted los declaró, así su interfaz conserva su orden preferido en vez de uno numérico.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"value": 13,
"flags": [
{
"name": "read",
"bit": 1
},
{
"name": "write",
"bit": 2
},
{
"name": "execute",
"bit": 4
},
{
"name": "admin",
"bit": 8
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bitmask_flags_decode",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_flags | 256 |
max_safe_integer | 9007199254740991 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Resulta útil para leer campos de bases de datos, cargas de API, valores de protocolos, controles de acceso y configuraciones heredadas sin convertir números a binario manualmente ni depender del comportamiento particular de un lenguaje.
Describa la máscara con bits nombrados explícitamente
Comience con el entero no negativo del campo value y añada una fila de flags por cada significado definido en su sistema. Las definiciones pueden aparecer en cualquier orden; active_flags respeta el orden proporcionado para que una aplicación mantenga su presentación preferida. El cero es una máscara válida y genera un array active_flags vacío.
Interprete las banderas activas y los bits desconocidos
Para cada definición, el decodificador comprueba si esa posición binaria está presente en value. Un valor distinto de cero no constituye necesariamente un error: puede indicar una bandera recién incorporada por el servidor, una opción interna omitida deliberadamente o una discrepancia de versión del esquema. Mostrar el resto es más seguro que descartar información. El valor original permanece intacto para conservar una procedencia exacta en registros y comprobaciones posteriores. Cuando lo está, añade el nombre correspondiente a active_flags y suma su valor al total activo declarado. La respuesta incluye además unknown_bits, calculado restando del valor original todos los bits activos que sí fueron declarados. Si unknown_bits vale cero, las definiciones suministradas explican completamente la máscara. Por ejemplo, con value igual a 13 y los bits read=1, write=2, execute=4 y admin=8, los nombres activos son read, execute y admin, mientras unknown_bits vale cero. Si se omitiese el bit 8, el mismo valor devolvería read y execute, con unknown_bits igual a 8.
Aplique una decodificación determinista a permisos y opciones
Esta capacidad vuelve legibles esos campos en el límite de una integración. Además evita los operadores bit a bit de 32 bits con signo de JavaScript, por lo que procesa máscaras exactas muy superiores a 32 bits. Las máscaras de bits son habituales en columnas de bases de datos, modos de sistemas operativos, controles de funciones, registros de dispositivos, estados de juegos y respuestas de API externas, porque agrupan muchos booleanos en un solo entero. Guarde las definiciones junto con la versión del esquema, invoque el decodificador al recibir cada registro y utilice active_flags para mostrar, filtrar o comprobar políticas. Supervise unknown_bits como señal de compatibilidad: un resto distinto de cero puede enviar el registro a revisión antes de que el software confunda un permiso nuevo con un valor antiguo común. El algoritmo realiza operaciones acotadas sobre un máximo de 256 definiciones y no usa red, reloj, configuración regional, azar ni estado mutable; el mismo JSON siempre genera el mismo JSON. El navegador y la API comparten la misma biblioteca. La consulta interactiva es gratuita y cada tarea automatizada correcta cuesta $0.002.
Casos de integración
Inspeccione opciones de API y protocolos
Decodifique valores de opciones combinadas de una integración y conserve los bits no declarados como alerta de cambios del esquema.
Preguntas técnicas
¿Qué significa unknown_bits?
Es la parte de value que está activa pero no corresponde a ninguna definición proporcionada. Cero indica que las declaraciones explican toda la máscara.
¿Se conserva el orden de las banderas?
Sí. active_flags sigue el orden de las definiciones recibidas, independientemente del orden numérico de sus bits.
¿Cuánto cuesta la API?
Cada tarea correcta de la API usa el precio base publicado de $0.002. También puede ejecutar el decodificador gratis en el navegador.