Desempacotador RGB565 para RGB
Leia um valor RGB565 de 16 bits como uma cor comum: 0xF800, ou 63488, é vermelho puro, 255, 0, 0 e #FF0000. Os cinco bits de vermelho, seis de verde e cinco de azul são ampliados para a faixa completa, com os níveis guardados à vista. 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
- Valor
- 0xF800
- Valor
- 63.488
- RGB565 (hex)
- 0xF800
- Red5
- 31
- Verde (6 bits)
- 0
Este desempacotador de RGB565 para RGB converte um valor de cor compacto de 16 bits nos canais conhecidos de vermelho, verde e azul de 8 bits. Ele confirma que a entrada é um inteiro dentro da faixa sem sinal de 16 bits, separa os cinco bits de vermelho, os seis de verde e os cinco de azul e, em seguida, dimensiona cada canal de maneira determinística entre 0 e 255. Você pode informar um valor decimal ou hexadecimal com prefixo 0x e receberá o valor empacotado original, os campos de bits, uma string RGB e uma cor hexadecimal de seis dígitos.
Entenda a organização do RGB565
O RGB565 armazena uma cor em dezesseis bits, em vez dos vinte e quatro usados pelo RGB comum de 8 bits. Os cinco bits mais significativos representam o vermelho, os seis bits centrais representam o verde e os cinco bits menos significativos representam o azul. O verde recebe um bit extra porque a visão humana percebe com especial sensibilidade as mudanças nessa parte do espectro.
Para desempacotar o valor, esta ferramenta desloca e mascara o inteiro, produzindo vermelho de 0 a 31, verde de 0 a 63 e azul de 0 a 31. Depois, apresenta esses componentes de profundidade reduzida ao lado dos equivalentes expandidos. O resultado atende tanto a quem precisa de uma cor pronta para exibição quanto a quem deseja examinar os campos exatos guardados em firmware, framebuffer embarcado, recurso binário ou protocolo de dispositivo.
O formato hexadecimal de quatro dígitos é sempre preenchido, preservando zeros à esquerda e simplificando comparações.
Veja como os canais reduzidos viram valores de 8 bits
Um canal reduzido não contém informação suficiente para recuperar exatamente a amostra original de 8 bits; por isso, o desempacotamento necessariamente gera uma aproximação. Este conversor aplica dimensionamento proporcional explícito com arredondamento para o inteiro mais próximo. Vermelho e azul são multiplicados por 255, divididos por 31 e arredondados; o verde é multiplicado por 255, dividido por 63 e arredondado.
Assim, os extremos são exatos: zero se torna zero e o maior componente se torna 255. Os valores intermediários ocupam toda a faixa de 8 bits, sem aleatoriedade ou variação de ambiente. A regra pode ser reproduzida em JavaScript, C, Rust, Python ou planilhas, e os campos da resposta permitem conferir cada etapa.
Alguns sistemas expandem os bits por repetição, o que costuma ficar próximo, mas pode divergir. Aqui, a regra proporcional é fixa e documentada para testes e comparações entre linguagens.
Forneça uma entrada válida e use o resultado
Informe um único valor RGB565 sem sinal em dígitos decimais, como 63488, ou em hexadecimal com o prefixo obrigatório 0x, como 0xF800. A faixa aceita vai de 0 a 65535, inclusive, pois nenhum valor maior cabe em dezesseis bits. Números negativos, frações, letras hexadecimais sem prefixo, caracteres extras, arrays e objetos fora do contrato são rejeitados, em vez de sofrerem interpretação parcial.
Essa rigidez impede que um valor como 65536 volte a preto por estouro e esconda um problema anterior. A resposta contém o decimal normalizado, o RGB565 hexadecimal preenchido, os componentes 5/6/5 originais, os números r, g e b dimensionados, uma string rgb() e um hexadecimal RGB de seis dígitos. Você pode alimentar código de imagem com os canais, comparar o hexadecimal durante a depuração ou registrar as duas formas em uma conversão.
Casos de uso
Inspecionar cores de telas embarcadas
Converta constantes de firmware ou framebuffer em valores RGB conhecidos e mantenha os campos 5/6/5 originais.
Decodificar recursos gráficos binários
Desempacote palavras de pixel de 16 bits em canais de 8 bits para diagnóstico, prévia ou conversão determinística.
Perguntas frequentes
Quais formatos de entrada são aceitos?
Use dígitos decimais de 0 a 65535 ou hexadecimal com prefixo 0x, por exemplo 63488 ou 0xF800.
Por que o verde usa seis bits?
O RGB565 atribui seis bits ao verde e cinco ao vermelho e ao azul, oferecendo gradação verde mais fina em uma palavra de 16 bits.
É possível recuperar exatamente a cor original de 8 bits?
Não. O empacotamento descartou informações de ordem inferior. Os canais retornados são aproximações determinísticas dimensionadas para toda a faixa de 0 a 255.
Como os canais são dimensionados?
Vermelho e azul usam round(componente × 255 ÷ 31); verde usa round(componente × 255 ÷ 63).
O que acontece se eu digitar 65536?
O valor é recusado. Um RGB565 precisa caber em dezesseis bits, então a faixa aceita vai de 0 a 65535; um número maior não vira preto escondido, ele é rejeitado para revelar o erro na origem.
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/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)Exemplo de requisição
{
"value": "0xF800"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb565_rgb",
"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.
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
Forneça uma entrada válida e use o resultado
As solicitações automatizadas pela API custam US$ 0,002 cada.
Casos de integração
Criar fixtures entre linguagens
Gere valores empacotados e dimensionados explícitos para comparar implementações RGB565 em aplicativos, dispositivos e testes.
Perguntas técnicas
O que acontece se o valor estiver fora da faixa?
A solicitação retorna um erro invalid_input, sem causar estouro, truncamento ou interpretação de bits extras.
Quanto custa a conversão pela API?
Cada solicitação à API custa US$ 0,002; você também pode executar a conversão de modo interativo no navegador.