Empacotador RGB565
Transforme 255, 128, 0 no valor 64512 do RGB565, ou 0xFC00, e confira que na tela ele aparece como 255, 130, 0. A ferramenta também desempacota um valor tirado de um firmware nos canais vermelho, verde e azul. 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
- Operação
- Pack
- Resistência (Ω)
- 255
- G
- 128
- B
- 0
- Valor
- 64.512
- Hex
- 0xFC00
- Red5
- 31
- Verde (6 bits)
- 32
Este empacotador RGB565 converte canais vermelho, verde e azul de oito bits no formato compacto de dezesseis bits usado em displays embarcados, microcontroladores, imagens e framebuffers. Ele também decodifica uma palavra RGB565 em canais escalonados. Cada conversão informa o valor decimal, o hexadecimal preenchido, os campos de cinco, seis e cinco bits e o resultado visual após o retorno. A validação rigorosa identifica canais fora do intervalo e valores malformados antes que eles sejam silenciosamente transformados em outra cor.
Empacote três canais de 8 bits em uma palavra RGB565
Selecione a operação de empacotamento e informe canais inteiros r, g e b entre 0 e 255, inclusive. O conversor primeiro reduz vermelho e azul de oito para cinco bits, no intervalo de 0 a 31. Verde é reduzido para seis bits, de 0 a 63, pois o layout RGB565 reserva um bit adicional para essa cor.
Cada conversão usa escala proporcional com arredondamento para o inteiro mais próximo; assim, 0 e 255 correspondem exatamente aos extremos, enquanto cores intermediárias usam o nível disponível mais próximo. Depois, vermelho ocupa os bits 15 a 11, verde os bits 10 a 5 e azul os bits 4 a 0. Uma operação OR combina os campos em um inteiro de dezesseis bits sem sinal.
Os componentes separados permitem que você confira cada etapa, em vez de receber apenas um número sem explicação.
Entenda a quantização e o resultado de retorno
RGB565 não preserva todas as cores RGB de vinte e quatro bits, porque representa 16,777,216 entradas possíveis com apenas 65,536 valores. Portanto, cores próximas podem gerar a mesma palavra, e o desempacotamento não recupera as informações inferiores descartadas. Para deixar essa perda evidente, a resposta de empacotamento inclui um objeto com a cor de oito bits representada pela palavra.
O decodificador multiplica vermelho e azul de cinco bits por 255, divide por 31 e arredonda; para verde, usa 255 e 63. Essa regra proporcional é determinística, mantém os extremos exatos e pode ser reproduzida em JavaScript, C, Rust, Python e outros ambientes. Os canais retornados podem diferir um pouco da entrada por causa da quantização prevista.
Ao fornecer campos reduzidos, palavra empacotada e canais expandidos juntos, a ferramenta ajuda você a comparar implementações, detectar confusão de ordem de bytes, validar constantes e decidir se a precisão atende ao display ou recurso visual desejado.
Desempacote valores existentes e evite erros de formato
Selecione a operação de desempacotamento quando você já tiver uma palavra RGB565 obtida de firmware, framebuffer, captura de protocolo ou arquivo de imagem. Informe value como dígitos decimais de 0 a 65535 ou em hexadecimal com prefixo 0x. O conversor rejeita negativos, frações, letras hexadecimais sem prefixo, caracteres adicionais e números acima do intervalo de dezesseis bits, sem truncá-los.
A saída inclui o inteiro decimal normalizado, o hexadecimal preenchido, os três campos armazenados e os canais r, g e b escalonados. RGB565 define a distribuição dos bits, não a ordem dos bytes. Conforme o dispositivo ou formato, o byte alto ou o baixo pode vir primeiro; troque-os antes se a origem usar a ordem oposta.
RGB565 também difere de BGR565, que inverte vermelho e azul. Esta ferramenta mantém vermelho na parte alta e azul na parte baixa.
Casos de uso
Gere constantes para displays
Converta canais RGB de design em valores RGB565 preenchidos para firmware, drivers e tabelas de consulta.
Verifique pixels de framebuffer
Decodifique palavras capturadas de dezesseis bits e compare os canais expandidos com as cores esperadas nos testes.
Perguntas frequentes
Como os canais de 8 bits são reduzidos?
Vermelho e azul usam round(canal × 31 ÷ 255), enquanto verde usa round(canal × 63 ÷ 255).
Por que a cor desempacotada pode ser diferente?
O empacotamento remove informações inferiores. O retorno é a cor mais próxima representada pela palavra RGB565.
Quais formatos empacotados são aceitos?
Use dígitos decimais de 0 a 65535 ou uma string hexadecimal com prefixo 0x, como 0xF800.
A ferramenta troca os bytes?
Não. Ela converte a palavra RGB565 numérica; trate a ordem dos bytes ao ler ou gravar formatos orientados a bytes.
Por que o verde tem um bit a mais que o vermelho e o azul?
O formato RGB565 reserva seis bits para o verde e cinco para o vermelho e o azul, então o verde vai de 0 a 63 e os outros dois de 0 a 31. O vermelho fica nos bits altos, o verde no meio e o azul nos bits baixos.
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/dev/rgb565-pack \
-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/dev/rgb565-pack", {
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/dev/rgb565-pack",
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/dev/rgb565-pack", 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/dev/rgb565-pack", 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": "dev.rgb565_pack",
"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
Desempacote valores existentes e evite erros de formato
O navegador atende verificações pontuais, e cada solicitação API custa US$ 0,002 para automação, testes ou diagnóstico.
Casos de integração
Crie fixtures entre linguagens
Registre entradas, campos reduzidos, palavras empacotadas e canais de retorno para testes consistentes em dispositivos e aplicações.
Perguntas técnicas
Quanto custa uma conversão pela API?
Cada solicitação API custa US$ 0,002; a conversão interativa também está disponível no navegador.