Empacotador RGB para RGB555
Compacte uma cor RGB numa palavra RGB555 de 15 bits: o laranja 255, 128, 0 vira 32256, ou 0x7E00. Cada canal mantém seus cinco bits mais altos, o formato dos modos high color do VGA e de jogos antigos de PC. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Resistência (Ω)
- 255
- G
- 128
- B
- 0
- R5
- 31
- G5
- 16
- B5
- 0
- R quantizado
- 248
O hardware gráfico legado guarda a cor como uma palavra RGB555 de quinze bits, não como três canais de oito bits. Este empacotador de RGB para RGB555 recebe inteiros de vermelho, verde e azul de zero a duzentos e cinquenta e cinco, trunca cada canal para cinco bits ao descartar os três bits menos significativos e empacota o resultado com o vermelho nos bits quatorze a dez, o verde nos bits nove a cinco e o azul nos bits quatro a zero. O bit alto não usado permanece zero, de modo que o inteiro empacotado fica sempre entre zero e trinta e dois mil setecentos e sessenta e sete. O mecanismo é totalmente determinístico: sem rede, semente aleatória ou relógio de parede.
O que significa empacotar em RGB555 e como a palavra de quinze bits é montada
O sRGB de oito bits, o modelo que CSS e as ferramentas de pintura modernas usam, dá a cada um de vermelho, verde e azul duzentos e cinquenta e seis níveis distintos. O high-color de quinze bits, chamado RGB555, guarda só trinta e dois níveis por canal. A conversão histórica é truncamento, não arredondamento perceptual: desloque cada canal de oito bits três bits à direita, o mesmo que dividir de forma inteira por oito e descartar o resto.
Vermelho puro duzentos e cinquenta e cinco vira trinta e um, cinza médio cento e vinte e oito vira dezesseis, e qualquer valor de zero a sete colapsa para zero. Esses três campos de cinco bits são então empacotados em um inteiro sem sinal com o vermelho nos bits quatorze a dez, o verde nos bits nove a cinco e o azul nos bits quatro a zero.
O bit quinze fica sem uso e sempre é escrito como zero, então a palavra empacotada nunca passa de trinta e dois mil setecentos e sessenta e sete, o hexadecimal 0x7FFF. Esse é o leiaute RGB555 documentado pela cor de 15 bits do Windows, pelos modos VGA high-color e por muitos motores de PC — não a troca BGR555 de alguns portáteis, em que o azul ocupa os cinco bits de dados altos.
Contrato de entrada, regras de truncamento e validação que nunca limita
Espaços externos em canais-string são aparados. Um valor só é legal quando é um inteiro finito de zero a duzentos e cinquenta e cinco inclusive. Não há limite silencioso nem arredondamento ao nível mais próximo: sete deslocado três bits à direita é zero, oito vira um, e duzentos e cinquenta e cinco vira trinta e um.
Essa regra só de truncar coincide com o caminho de hardware dos DAC VGA high-color e de inúmeros conversores de assets que descartam os três bits menos significativos antes de gravar um framebuffer de quinze bits. Depois da validação o mecanismo empacota rgb555 como o vermelho de cinco bits deslocado dez à esquerda, disjunção bit a bit com o verde de cinco bits deslocado cinco à esquerda, disjunção bit a bit com o azul de cinco bits.
Laranja duzentos e cinquenta e cinco, cento e vinte e oito, zero vira portanto trinta e um, dezesseis, zero e empacota em trinta e dois mil duzentos e cinquenta e seis, escrito 0x7E00. Branco duzentos e cinquenta e cinco em cada canal empacota no máximo trinta e dois mil setecentos e sessenta e sete. Preto empacota em zero.
Onde um empacotador de RGB para RGB555 se justifica, e quanto custa
Cadeias de ferramentas retrô encontram esse mapeamento quando um editor de paleta precisa emitir as mesmas palavras de quinze bits que um modo VGA high-color ou um motor antigo de PC guardava na memória de vídeo, quando um conversor de sprites grava um blob binário de paleta, ou quando um teste de emulador compara um framebuffer empacotado com um dump de referência.
Quem faz ROM hacking e pipelines de assets usa isso para transformar maquetes modernas de oito bits no visual grosso de trinta e dois níveis por canal do high-color de 15 bits, sem levantar uma biblioteca gráfica inteira. Cursos de computação usam como exercício limpo de deslocamento: a turma confere que duzentos e cinquenta e cinco deslocado três bits à direita é trinta e um e que a palavra empacotada do branco é 0x7FFF.
Quem desenvolve front-end e ainda envia fallbacks de formatos históricos, ou documenta como uma exportação de canvas vai ficar após a quantização em cinco bits, pode chamar o mesmo contrato a partir de um script. Combine o empacotador gratuito de RGB para RGB555 no navegador com conversores hex ou HSL quando o próximo passo for uma folha de estilo, e com o empacotador de inteiro RGB de 24 bits quando precisar de oito bits por canal em vez de cinco. Nesta página o trabalho roda inteiro no seu dispositivo.
Casos de uso
Paletas VGA high-color e motores clássicos de PC
Converta amostras de maquete de oito bits nas palavras RGB555 de 15 bits que um modo VGA high-color ou um motor clássico de PC guardava na memória de vídeo.
Ensinar deslocamentos e a quantização em cinco bits
Deixe a turma conferir que cada canal é truncado com um deslocamento à direita de três e empacotado com o vermelho nos bits 14–10, sem escrever os deslocamentos à mão.
Perguntas frequentes
Como empacotar RGB de 8 bits em um valor RGB555?
O rgb555 da resposta é a palavra de 15 bits ((r>>3)<<10) | ((g>>3)<<5) | (b>>3), também dada em hex e como string binária de 15 bits.
Como cada canal é truncado para cinco bits?
O mecanismo descarta os três bits menos significativos com um deslocamento à direita de três (divisão inteira por oito). Não há arredondamento: 7 vira 0, 8 vira 1 e 255 vira 31.
Qual é a faixa do inteiro RGB555 empacotado?
De zero a 32767 (0x0000 a 0x7FFF). O bit 15 não é usado e permanece zero. Branco puro empacota em 32767; preto puro empacota em 0.
O que acontece se um canal ficar fora de 0–255?
Canais nunca são limitados nem encapsulados, e a validação falha sem cobrança.
O empacotador de RGB para RGB555 é grátis?
A ferramenta do navegador roda de graça no seu dispositivo.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"r": 255,
"g": 128,
"b": 0
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_rgb555",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
min_channel | 0 |
max_channel | 255 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Designers, autores de emuladores e cadeias de ferramentas de jogos retrô usam esse mapeamento quando uma paleta, um framebuffer ou um dump BIOS espera o leiaute histórico de high-color de quinze bits dos modos VGA, jogos de PC antigos e muitas API gráficas. Canais fora da faixa legal de oito bits falham com invalid_input em vez de encapsular ou limitar em silêncio. Use de graça no navegador para paletas e conferência de lição, ou chame a API a US$ 0,002 por item correto quando um pipeline de build precisar do mesmo contrato.
O que significa empacotar em RGB555 e como a palavra de quinze bits é montada
A resposta ecoa os r, g e b originais, expõe os campos de cinco bits como r5, g5 e b5, reconstrói o visual quantizado de oito bits como quantized_r, quantized_g e quantized_b ao deslocar três casas à esquerda, e publica o inteiro empacotado como rgb555 junto com uma forma hex 0x, quatro dígitos hexadecimais maiúsculos, uma string binária de quinze caracteres, um eco css_rgb da entrada, a etiqueta de método rgb_to_rgb555, a string da fórmula, bits_per_channel igual a cinco e max igual a trinta e dois mil setecentos e sessenta e sete. Entradas idênticas sempre produzem o mesmo JSON porque o caminho é aritmética pura.
Contrato de entrada, regras de truncamento e validação que nunca limita
Envie por POST um corpo JSON com três inteiros obrigatórios: r para vermelho, g para verde e b para azul. Cada campo pode chegar como número JSON ou como string de dígitos; os aliases red e R maiúsculo, green e G maiúsculo, e blue e B maiúsculo são aceitos para planilhas e formulários tipados reutilizarem o mesmo contrato. Campos ausentes, strings vazias, texto não numérico, Infinity, NaN, frações como cento e vinte e oito ponto cinco, negativos e qualquer canal de duzentos e cinquenta e seis ou mais falham com invalid_input que nomeia o campo e declara que ele deve permanecer entre zero e duzentos e cinquenta e cinco. Essas falhas não são cobradas.
Onde um empacotador de RGB para RGB555 se justifica, e quanto custa
Pela API cada empacotamento bem-sucedido custa US$ 0,002; falhas de validação não consomem saldo, e nada fica armazenado depois que a resposta volta.
Casos de integração
Fixtures de emulador e conversores de sprites
Empacote entradas de paleta e pixels de framebuffer em inteiros RGB555 determinísticos para testes de emulador e conversores de assets afirmarem dumps binários.