Empacotador RGB565
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.
Executar grátis
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. A resposta inclui o valor decimal e um hexadecimal uniforme de quatro dígitos, adequado para constantes C, codificadores binários, drivers de display, tabelas e fixtures. 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. O navegador atende verificações pontuais, e cada solicitação API custa US$ 0,002 para automação, testes ou diagnóstico.
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.
Crie fixtures entre linguagens
Registre entradas, campos reduzidos, palavras empacotadas e canais de retorno para testes consistentes em dispositivos e aplicações.
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.
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.
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. |