Alfa hexadecimal em porcentagem de opacidade #RRGGBBAA
Descubra a opacidade escondida em uma cor hex: o último par de #33669980 é 80, que corresponde ao byte 128 e a uma opacidade de 50,2%, e não aos 50% que muita gente supõe. 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
- Hex
- #33669980
- Alfa em hex
- 80
- Byte alfa
- 128
- Opacidade (%)
- 50,2
Este conversor lê os dois últimos dígitos de uma cor RRGGBBAA de oito posições e transforma esse byte alfa em uma porcentagem de 0% a 100%. Ele valida a cor inteira antes do cálculo, aceita uma cerquilha inicial opcional e informa a cor normalizada, o par alfa, o byte decimal e a porcentagem de opacidade. O resultado é determinístico e sempre arredondado para duas casas decimais, sendo apropriado para tokens de design, revisões de CSS, migrações automatizadas, documentação e testes que exigem um número estável em vez de uma estimativa visual.
Leia o byte alfa na posição correta
Uma cor hexadecimal de oito dígitos na ordem CSS contém quatro pares de bytes: vermelho, verde, azul e alfa. Portanto, o byte alfa é sempre o último par de RRGGBBAA. Por exemplo, os pares de #33669980 são 33, 66, 99 e 80; assim, este conversor usa 80.
A ordem é importante porque algumas ferramentas gráficas e formatos antigos utilizam AARRGGBB, com alfa no início. Esta capacidade não tenta adivinhar convenções nem reorganizar canais. Ela aceita somente RRGGBBAA, com ou sem uma cerquilha inicial.
Todos os oito dígitos são conferidos, embora apenas os dois últimos determinem a porcentagem. Validar o valor completo impede que uma cor inválida como #ZZZZZZ80 pareça confiável apenas porque seu par alfa é válido. Se a sua fonte armazena alfa no início, faça primeiro a conversão do formato.
Converta um byte em porcentagem estável
Um byte hexadecimal vai de 00 a FF, equivalente aos valores decimais de 0 a 255. A opacidade usa os mesmos extremos: o byte 0 é totalmente transparente e o byte 255 é totalmente opaco. A conversão divide o byte alfa decimal por 255 e multiplica o resultado por 100.
Por exemplo, o alfa 80 corresponde ao decimal 128 e resulta em 50.2, não em um valor presumido de 50. Os extremos continuam exatos: 00 retorna 0 e FF retorna 100. O campo numérico não inclui o sinal de porcentagem, então pode ser comparado, ordenado, serializado ou usado diretamente em outros cálculos sem remover texto de exibição.
Casos de uso
Auditar tokens de design
Transforme bytes alfa incorporados em porcentagens legíveis e mantenha o byte exato para rastreabilidade.
Revisar CSS gerado
Confirme se uma cor RRGGBBAA exportada contém a opacidade esperada por designers e desenvolvedores.
Criar testes de migração
Produza valores estáveis de opacidade para testes que levam cores de oito dígitos a outra representação.
Perguntas frequentes
Qual ordem hexadecimal de oito dígitos é aceita?
A ordem obrigatória é RRGGBBAA, com alfa nos dois últimos dígitos. AARRGGBB não é tratado como convenção alternativa.
Posso incluir a cerquilha inicial?
Sim. Tanto #33669980 quanto 33669980 são válidos e produzem o mesmo resultado normalizado.
Como a porcentagem é calculada?
O par alfa é interpretado como byte, dividido por 255, multiplicado por 100 e arredondado para duas casas decimais.
Por que o alfa 80 resulta em 50.2, e não 50?
O hexadecimal 80 equivale ao decimal 128, e 128 dividido por 255 é ligeiramente maior que a metade. O resultado com duas casas é 50.2.
Que opacidade os pares alfa 00 e FF dão?
O 00 dá 0%, uma cor totalmente transparente, e o FF, que é o byte 255, dá 100%, uma cor totalmente opaca. Cada par intermediário é dividido por 255 e multiplicado por 100.
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/hex-alpha-to-opacity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hex":"#33669980"}'const res = await fetch("https://api.kit.forhosting.com/color/hex-alpha-to-opacity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hex": "#33669980"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/hex-alpha-to-opacity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hex": "#33669980"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/hex-alpha-to-opacity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hex":"#33669980"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hex":"#33669980"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/hex-alpha-to-opacity", 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
{
"hex": "#33669980"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.hex_alpha_to_opacity",
"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
Leia o byte alfa na posição correta
A resposta inclui um hexadecimal canônico em minúsculas e mantém o par extraído em alpha_hex, facilitando a conferência do byte que originou o cálculo.
Converta um byte em porcentagem estável
Como a maioria dos valores intermediários não corresponde a uma porcentagem decimal finita, opacity_percent é arredondado para duas casas decimais. Essa regra é fixa e determinística: entradas idênticas sempre geram o mesmo JSON, sem depender do idioma do navegador, do horário, da rede ou da configuração do computador. A resposta também mantém alpha_byte, permitindo que você preserve o valor original de oito bits.
Valide entradas e use o resultado com segurança
O tratamento rigoroso de entradas é importante quando cores passam por sistemas de design, geradores de código ou migrações de folhas de estilo. O conversor rejeita valores ausentes, tipos que não sejam strings, quantidade errada de dígitos e caracteres fora de 0-9 ou A-F. Espaços ao redor de uma string válida são ignorados e letras maiúsculas ou minúsculas são aceitas, mas cores abreviadas, RGB de seis dígitos, cerquilhas duplicadas e valores com alfa no início não são corrigidos silenciosamente. Ela também esclarece por que o valor 80, considerado aproximadamente metade da opacidade, equivale a cerca de 50.2%. Uma entrada rejeitada gera um erro invalid_input com uma mensagem útil, em vez de retornar uma porcentagem enganosa. Assim, pipelines automatizados podem parar cedo e revelar o problema de origem. Uma conversão via API custa US$ 0,002; o cálculo puro não depende da rede e também pode ser executado imediatamente no navegador. Use opacity_percent para apresentação arredondada e alpha_byte quando precisar manter a origem exata.
Perguntas técnicas
O que acontece quando a cor é inválida?
A solicitação retorna um erro invalid_input que descreve valor ausente, tamanho incorreto, tipo inadequado ou caractere inválido.
Quanto custa uma conversão pela API?
Uma conversão custa US$ 0,002.