Empaquetador RGB a RGB555
Empaquete un color RGB en una palabra RGB555 de 15 bits: el naranja 255, 128, 0 se convierte en 32256, o 0x7E00. Cada canal conserva sus cinco bits altos, la disposición de los modos de color de alta densidad VGA y de juegos de PC antiguos. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Resistencia (Ω)
- 255
- G
- 128
- B
- 0
- R5
- 31
- G5
- 16
- B5
- 0
- R cuantizado
- 248
El hardware gráfico antiguo guarda el color como una palabra RGB555 de quince bits, no como tres canales de ocho bits. Este empaquetador de RGB a RGB555 recibe enteros de rojo, verde y azul entre cero y doscientos cincuenta y cinco, trunca cada canal a cinco bits al descartar los tres bits menos significativos y empaqueta el resultado con el rojo en los bits catorce a diez, el verde en los bits nueve a cinco y el azul en los bits cuatro a cero. El bit alto no usado permanece en cero, de modo que el entero empaquetado queda siempre entre cero y treinta y dos mil setecientos sesenta y siete. El motor es por completo determinista: sin red, semilla aleatoria ni reloj de pared.
Qué significa empaquetar en RGB555 y cómo se construye la palabra de quince bits
El sRGB de ocho bits, el modelo que usan CSS y las herramientas de pintura modernas, otorga a cada uno de rojo, verde y azul doscientas cincuenta y seis intensidades distintas. El high-color de quince bits, conocido como RGB555, conserva solo treinta y dos niveles por canal. La conversión histórica es un truncamiento, no un redondeo perceptual: desplace cada canal de ocho bits tres bits a la derecha, lo mismo que dividir de forma entera entre ocho y desechar el resto.
El rojo puro doscientos cincuenta y cinco pasa a treinta y uno, el gris medio ciento veintiocho pasa a dieciséis, y cualquier valor de cero a siete se colapsa a cero. Esos tres campos de cinco bits se empaquetan luego en un entero sin signo con el rojo en los bits catorce a diez, el verde en los bits nueve a cinco y el azul en los bits cuatro a cero.
El bit quince no se usa y siempre se escribe como cero, así que la palabra empaquetada nunca supera treinta y dos mil setecientos sesenta y siete, es decir el hexadecimal 0x7FFF. Este es el diseño RGB555 documentado por el color de 15 bits de Windows, los modos VGA high-color y muchos motores de PC; no es el intercambio BGR555 de algunas portátiles, donde el azul ocupa los cinco bits de datos altos.
Contrato de entrada, reglas de truncamiento y validación que nunca recorta
Los espacios exteriores de los canales en cadena se recortan. Un valor es legal solo cuando es un entero finito de cero a doscientos cincuenta y cinco inclusive. Esos fallos no se facturan.
No hay recorte silencioso ni redondeo al nivel más cercano: siete desplazado tres bits a la derecha es cero, ocho pasa a uno y doscientos cincuenta y cinco pasa a treinta y uno. Esa regla de solo truncar coincide con el camino de hardware de los DAC VGA high-color y de incontables convertidores de recursos que descartan los tres bits menos significativos antes de escribir un framebuffer de quince bits.
Tras validar, el motor empaqueta rgb555 como el rojo de cinco bits desplazado diez a la izquierda, disyunción bit a bit con el verde de cinco bits desplazado cinco a la izquierda, disyunción bit a bit con el azul de cinco bits. El naranja doscientos cincuenta y cinco, ciento veintiocho, cero se convierte por tanto en treinta y uno, dieciséis, cero y se empaqueta en treinta y dos mil doscientos cincuenta y seis, escrito 0x7E00.
El blanco doscientos cincuenta y cinco en cada canal se empaqueta en el máximo treinta y dos mil setecientos sesenta y siete. El negro se empaqueta en cero.
Dónde resulta útil un empaquetador de RGB a RGB555 y cuánto cuesta
Las cadenas de herramientas retro encuentran este mapeo cuando un editor de paleta debe emitir las mismas palabras de quince bits que un modo VGA high-color o un motor de PC antiguo guardaba en memoria de vídeo, cuando un convertidor de sprites escribe un blob binario de paleta, o cuando una prueba de emulador compara un framebuffer empaquetado con un volcado de referencia.
Quienes parchean ROM y los pipelines de recursos lo usan para convertir maquetas modernas de ocho bits en el aspecto grueso de treinta y dos niveles por canal del high-color de 15 bits, sin levantar una biblioteca gráfica completa. Los cursos de informática lo emplean como ejercicio limpio de desplazamientos: el alumnado puede comprobar que doscientos cincuenta y cinco desplazado tres bits a la derecha es treinta y uno y que la palabra empaquetada del blanco es 0x7FFF.
Quienes desarrollan front-end y aún publican compatibilidad con formatos históricos, o documentan cómo se verá una exportación de lienzo tras la cuantización a cinco bits, pueden llamar al mismo contrato desde un script. Combine el empaquetador gratuito de RGB a RGB555 en el navegador con convertidores hex o HSL cuando el siguiente paso sea una hoja de estilo, y con el empaquetador de enteros RGB de 24 bits cuando necesite ocho bits por canal en lugar de cinco. En esta página el trabajo se ejecuta por completo en su dispositivo.
Qué puede hacer con ella
Paletas VGA high-color y motores de PC clásicos
Convierta muestras maquetadas de ocho bits en las palabras RGB555 de 15 bits que un modo VGA high-color o un motor clásico de PC guardaba en la memoria de vídeo.
Enseñar desplazamientos y la cuantización a cinco bits
Permita que el alumnado compruebe que cada canal se trunca con un desplazamiento a la derecha de tres y se empaqueta con el rojo en los bits 14–10, sin escribir a mano esos desplazamientos.
Preguntas frecuentes
¿Cómo empaqueta RGB de 8 bits en un valor RGB555?
El rgb555 de la respuesta es la palabra de 15 bits ((r>>3)<<10) | ((g>>3)<<5) | (b>>3), también dada en hex y como cadena binaria de 15 bits.
¿Cómo se trunca cada canal a cinco bits?
El motor descarta los tres bits menos significativos con un desplazamiento a la derecha de tres (división entera entre ocho). No hay redondeo: 7 pasa a 0, 8 pasa a 1 y 255 pasa a 31.
¿Cuál es el rango del entero RGB555 empaquetado?
De cero a 32767 (0x0000 a 0x7FFF). El bit 15 no se usa y permanece en cero. El blanco puro se empaqueta en 32767; el negro puro se empaqueta en 0.
¿Qué ocurre si un canal queda fuera de 0–255?
Los canales nunca se recortan ni se envuelven, y la validación fallida no se cobra.
¿El empaquetador de RGB a RGB555 es gratuito?
La herramienta del navegador se ejecuta gratis en su dispositivo.
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/rgb-rgb555 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-rgb555", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-rgb555",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-rgb555", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-rgb555", 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
{
"r": 255,
"g": 128,
"b": 0
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_rgb555",
"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
min_channel | 0 |
max_channel | 255 |
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
Diseñadores, autores de emuladores y cadenas de herramientas de juegos retro emplean este mapeo cuando una paleta, un framebuffer o un volcado BIOS espera el diseño histórico de high-color de quince bits de los modos VGA, los juegos de PC clásicos y muchas API gráficas. Los canales fuera del rango legal de ocho bits fallan con invalid_input en lugar de envolver o recortar en silencio. Úselo gratis en el navegador para paletas y comprobaciones escolares, o llame a la API a $0.002 por ítem correcto cuando un pipeline de compilación necesite el mismo contrato.
Qué significa empaquetar en RGB555 y cómo se construye la palabra de quince bits
La respuesta repite los r, g y b originales, expone los campos de cinco bits como r5, g5 y b5, reconstruye el aspecto cuantizado de ocho bits como quantized_r, quantized_g y quantized_b al desplazar a la izquierda tres posiciones, y publica el entero empaquetado como rgb555 junto con una forma hex 0x, cuatro dígitos hexadecimales en mayúsculas, una cadena binaria de quince caracteres, un eco css_rgb de la entrada, la etiqueta de método rgb_to_rgb555, la cadena de fórmula, bits_per_channel igual a cinco y max igual a treinta y dos mil setecientos sesenta y siete. Entradas idénticas producen siempre el mismo JSON porque el camino es aritmética pura.
Contrato de entrada, reglas de truncamiento y validación que nunca recorta
Envíe por POST un cuerpo JSON con tres enteros obligatorios: r para el rojo, g para el verde y b para el azul. Cada campo puede llegar como número JSON o como cadena de dígitos; se aceptan los alias red y R mayúscula, green y G mayúscula, y blue y B mayúscula, para que hojas de cálculo y formularios tipados reutilicen el mismo contrato. Campos ausentes, cadenas vacías, texto no numérico, Infinity, NaN, fracciones como ciento veintiocho punto cinco, negativos y cualquier canal de doscientos cincuenta y seis o más fallan con invalid_input que nombra el campo y declara que debe permanecer entre cero y doscientos cincuenta y cinco.
Dónde resulta útil un empaquetador de RGB a RGB555 y cuánto cuesta
Por la API cada empaquetado correcto cuesta $0.002; los fallos de validación no consumen saldo y no se almacena nada tras devolver la respuesta.
Casos de integración
Fixtures de emulador y convertidores de sprites
Empaquete entradas de paleta y píxeles de framebuffer en enteros RGB555 deterministas para que las pruebas de emulador y los convertidores de recursos puedan afirmar volcados binarios.