Desempaquetador RGB565 a RGB
Lea un valor RGB565 de 16 bits como un color normal: 0xF800, o 63488, es rojo puro, 255, 0, 0 y #FF0000. Los cinco bits de rojo, seis de verde y cinco de azul se escalan al rango completo, con los niveles guardados a la vista. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Valor
- 0xF800
- Valor
- 63 488
- RGB565 (hex)
- 0xF800
- Red5
- 31
- Verde (6 bits)
- 0
Este desempaquetador de RGB565 a RGB convierte un valor de color compacto de 16 bits en los habituales canales rojo, verde y azul de 8 bits. Comprueba que la entrada sea un entero dentro del intervalo sin signo de 16 bits, separa los cinco bits de rojo, los seis de verde y los cinco de azul, y después escala cada canal de forma determinista entre 0 y 255. Puede introducir un valor decimal o hexadecimal con prefijo 0x y recibirá el valor empaquetado original, sus campos de bits, una cadena RGB y un color hexadecimal de seis dígitos.
Comprenda la distribución de RGB565
RGB565 guarda un color en dieciséis bits, en lugar de los veinticuatro que utiliza el RGB habitual de 8 bits. Los cinco bits más significativos representan el rojo, los seis centrales representan el verde y los cinco menos significativos representan el azul. El verde dispone de un bit adicional porque la visión humana distingue especialmente bien los cambios en esa zona del espectro.
Para desempaquetar el valor, esta herramienta desplaza el entero y aplica máscaras para obtener un rojo entre 0 y 31, un verde entre 0 y 63 y un azul entre 0 y 31. A continuación presenta esos componentes de profundidad reducida junto con sus equivalentes ampliados. El resultado sirve tanto a quienes necesitan un color listo para mostrar como a quienes desean examinar los campos exactos almacenados en firmware, un framebuffer integrado, un recurso binario o un protocolo de dispositivo.
La forma hexadecimal de cuatro dígitos siempre conserva los ceros iniciales para facilitar comparaciones.
Vea cómo los canales reducidos pasan a 8 bits
Un canal reducido no contiene información suficiente para recuperar exactamente la muestra original de 8 bits, por lo que el desempaquetado siempre ofrece una aproximación. Este conversor aplica un escalado proporcional explícito y redondea al entero más cercano. El rojo y el azul se multiplican por 255, se dividen entre 31 y se redondean; el verde se multiplica por 255, se divide entre 63 y se redondea.
Así, los extremos coinciden de forma exacta: cero se convierte en cero y el máximo de cada componente se convierte en 255. Los valores intermedios ocupan todo el intervalo de 8 bits sin aleatoriedad ni diferencias según el entorno. La regla se puede reproducir en JavaScript, C, Rust, Python o una hoja de cálculo, y los campos de salida permiten auditar cada paso.
Algunos sistemas replican bits, una técnica parecida pero no siempre idéntica; aquí la regla proporcional está fijada y documentada para producir pruebas comparables.
Introduzca datos válidos y aproveche el resultado
Introduzca un único valor RGB565 sin signo mediante dígitos decimales, como 63488, o en hexadecimal con el prefijo obligatorio 0x, como 0xF800. El intervalo admitido va de 0 a 65535, ambos incluidos, porque ningún valor mayor cabe en dieciséis bits. Los números negativos, las fracciones, las letras hexadecimales sin prefijo, los caracteres finales, los arrays y los objetos ajenos al contrato se rechazan en vez de interpretarse parcialmente.
Esta validación estricta evita que un dato como 65536 se convierta en negro por desbordamiento y oculte un error anterior. La salida incluye el decimal normalizado, el RGB565 hexadecimal con relleno, los componentes originales 5/6/5, los números r, g y b escalados, una cadena rgb() y un hexadecimal RGB de seis dígitos. Puede usar los canales en código gráfico, comparar el hexadecimal durante una depuración o conservar ambas representaciones en un registro.
Qué puede hacer con ella
Inspeccionar colores de pantallas integradas
Convierta constantes de firmware o framebuffer a valores RGB conocidos sin perder los campos originales 5/6/5.
Decodificar recursos gráficos binarios
Desempaquete palabras de píxel de 16 bits en canales de 8 bits para diagnósticos, vistas previas o conversiones deterministas.
Preguntas frecuentes
¿Qué formatos de entrada se admiten?
Use dígitos decimales entre 0 y 65535 o un hexadecimal con prefijo 0x, por ejemplo 63488 o 0xF800.
¿Por qué el verde utiliza seis bits?
RGB565 asigna seis bits al verde y cinco al rojo y al azul, lo que aporta una gradación verde más fina dentro de una palabra de 16 bits.
¿Puede recuperarse el color original exacto de 8 bits?
No. El empaquetado descartó información de orden inferior. Los canales devueltos son aproximaciones deterministas escaladas al intervalo completo de 0 a 255.
¿Cómo se escalan los canales?
El rojo y el azul usan round(componente × 255 ÷ 31); el verde usa round(componente × 255 ÷ 63).
¿Qué pasa si escribo 65536?
Se rechaza. Un valor RGB565 debe caber en dieciséis bits, así que el rango admitido va de 0 a 65535; un número mayor no se acepta, en lugar de convertirse en negro y ocultar un error de origen.
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/color/rgb565-rgb \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"0xF800"}'const res = await fetch("https://api.kit.forhosting.com/color/rgb565-rgb", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0xF800"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb565-rgb",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0xF800"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb565-rgb", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0xF800"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0xF800"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb565-rgb", 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": "0xF800"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb565_rgb",
"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.
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
Introduzca datos válidos y aproveche el resultado
Cada solicitud automatizada mediante la API cuesta $0.002.
Casos de integración
Crear fixtures entre lenguajes
Genere valores empaquetados y escalados explícitos para comparar implementaciones RGB565 en aplicaciones, dispositivos y pruebas.
Preguntas técnicas
¿Qué ocurre si el valor está fuera del intervalo?
La solicitud devuelve un error invalid_input, sin desbordar, truncar ni interpretar bits adicionales.
¿Cuánto cuesta la conversión por API?
Cada solicitud a la API cuesta $0.002; también puede ejecutar la conversión de forma interactiva en el navegador.