ForHosting KIT · Ferramentas para dev

Calculadora de troca de ordem de bytes

0x12345678 vira 0x78563412 quando seus quatro bytes são invertidos, a passagem entre a ordem de rede e a memória little-endian. Escolha uma largura de 8, 16, 32 ou 64 bits e veja o valor antes e depois em hexadecimal, decimal e byte a byte. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Valor
0x12345678
Largura
32
Você obtém
Contagem de bytes
4
Hexadecimal antes
0x12345678
Hexadecimal depois
0x78563412
Decimal antes
305419896

Pilhas de rede, formatos de arquivo e firmware embarcado discordam o tempo todo sobre se o byte mais significativo de um inteiro vem primeiro ou por último. Um campo de comprimento que no fio aparece como 0x12345678 fica gravado como 0x78563412 em memória little-endian, e o caminho inverso é tão comum quando você despeja um registrador e precisa do valor em ordem de rede. Esta calculadora de troca de ordem de bytes aceita um inteiro e uma largura de 8, 16, 32 ou 64 bits, inverte os bytes dentro desse recipiente e devolve o valor hexadecimal antes e depois da troca, junto com as formas decimais e os arrays de bytes correspondentes.

O que uma troca de ordem de bytes faz em 8, 16, 32 e 64 bits

Um inteiro sem sinal de vários bytes é uma sequência de octetos cuja significância depende da endianness. Escrito na notação posicional usual, 0x12345678 significa que o byte mais significativo é 0x12 e o menos significativo é 0x78. O armazenamento big-endian dispõe esses bytes nessa mesma ordem; o little-endian os inverte, de modo que a memória fica com 78 56 34 12.

Trocar a ordem dos bytes é exatamente essa inversão dentro de um recipiente de largura fixa: a troca de 32 bits de 0x12345678 é 0x78563412, a de 16 bits de 0x1234 é 0x3412, e um valor de 8 bits não muda porque um único byte não tem ordem para virar. Uma troca de 64 bits percorre da mesma forma oito bytes, por isso 0x0123456789ABCDEF se torna 0xEFCDAB8967452301.

O hardware chama essa instrução de bswap; os auxiliares de rede POSIX como htons, htonl, ntohs e ntohl são a mesma inversão quando a ordem do host é little-endian. Esta calculadora não adivinha a sua plataforma e não precisa de um indicador de endian de origem: você informa o inteiro como as pessoas escrevem (ou como string hex 0x) e uma largura, e o resultado é o inteiro cujos bytes são o reverso dessa largura.

Aplicar a troca duas vezes restaura o valor original, o que a torna uma ida e volta segura para testes que convertem inteiros do host para ordem de rede e de volta.

Quando vale a pena inverter a ordem dos bytes

Engenharia reversa de protocolos, montagem de pacotes e desafios binários de CTF precisam o tempo todo de um bswap confiável para comparar um dump hex do Wireshark e um dump de registrador little-endian sem virar bytes na mão. Equipes de embarcado e firmware convertem constantes de configuração, sementes CRC e números mágicos entre a ordem de rede e a do MCU ao escrever cabeçalhos ou conferir imagens de flash.

Quem ensina endianness precisa de um oráculo ao vivo que mantém o inteiro fixo e só inverte os bytes numa largura escolhida, para que a turma veja por que htons sobre 0x1234 é 0x3412 num host little-endian. Scripts de integração contínua que geram vetores de teste para serializadores se beneficiam de uma função pura minúscula em vez de puxar uma caixa de ferramentas binária inteira por um só inteiro. Validação falha não consome saldo.

Mantenha as requisições pequenas, fixe as strings hex nos testes e você obtém uma troca de endian reproduzível para exercícios, analisadores e workers de borda.

Ordem de rede e ordem do host

Converta um inteiro de 16 ou 32 bits entre o formato de fio big-endian e a memória little-endian do host, do mesmo jeito que htons, htonl, ntohs e ntohl.

Constantes de firmware e dumps hex

Inverta os bytes de números mágicos, comprimentos e sementes CRC quando um dump hex e um literal inteiro em C discordam sobre a endianness.

Ensinar endianness

Mostre as duas formas hexadecimais do mesmo inteiro em 8, 16, 32 ou 64 bits para que a turma veja que uma troca só inverte os bytes.

Isso é o mesmo que htons ou bswap?

Sim. Em 16 bits coincide com htons/ntohs num host little-endian; em 32 bits coincide com htonl/ntohl e um bswap de 32 bits; em 64 bits coincide com um bswap de 8 bytes.

O que acontece se o valor não cabe na largura?

A calculadora não envelopa nem trunca: escolha um recipiente mais largo ou envie um valor que caiba.

Números negativos são permitidos?

Sim. Um valor negativo vira complemento de dois na largura escolhida e depois os bytes desse padrão sem sinal são invertidos.

Preciso dizer se meu valor está em big-endian ou little-endian?

Não. Digite o inteiro como você o escreveria, em decimal ou em hexadecimal com 0x, e escolha a largura: o resultado é o inteiro com os bytes invertidos dentro dessa largura, sem supor nada sobre a sua máquina.

Se eu inverter duas vezes, volto ao valor original?

Sim. Inverter os bytes duas vezes com a mesma largura devolve exatamente o valor inicial, por isso serve para testar conversões de ida e volta entre a ordem da máquina e a ordem de rede.

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.

POSThttps://api.kit.forhosting.com/dev/byte-order-swap

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev/byte-order-swap \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":"0x12345678","width":32}'
{
  "value": "0x12345678",
  "width": 32
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.byte_order_swap",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Valores que não cabem na largura escolhida, campos ausentes e larguras ilegais falham com invalid_input em vez de envelopar em silêncio.

Contrato de entrada, forma da resposta e erros

O inteiro precisa caber na largura escolhida: valores não negativos podem ser no máximo dois elevado à largura menos um, e os negativos são interpretados como complemento de dois e devem ficar no intervalo com sinal dessa largura. Campos numéricos opcionais são omitidos em vez de ir para null quando um resultado de 64 bits não seria exato. Envie por POST um corpo JSON com dois campos obrigatórios: value, o inteiro a trocar, e width, a largura em bits do recipiente. Value pode ser um número JSON, uma string decimal, uma string hexadecimal com prefixo 0x ou, de forma opcional, uma string binária 0b; os aliases number, n, integer e hex são aceitos. Width deve ser 8, 16, 32 ou 64 (aliases bits, bit_width e size) e pode chegar como número ou como um token curto como 32bit. Estouro, campo ausente, string vazia, não inteiro ou largura fora do conjunto fechado falham com invalid_input nomeando o campo; essas falhas não são cobradas. Em caso de sucesso o corpo inclui width e byte_count; hex_before e hex_after como strings 0x maiúsculas preenchidas com zeros; decimal_before e decimal_after como strings decimais exatas para que resultados de 64 bits não percam dígitos; bytes_before e bytes_after como arrays MSB primeiro de 0–255; e, quando cada magnitude cabe no intervalo de inteiros seguros do JavaScript, decimal_before_number e decimal_after_number. Exemplo: value 0x12345678 e width 32 produz hex_before 0x12345678, hex_after 0x78563412 e bytes 18,52,86,120 invertidos para 120,86,52,18.

Onde uma API de troca de ordem de bytes se justifica

Sites de conteúdo que competem por «calculadora de troca de ordem de bytes» ganham um caminho gratuito no navegador que coincide byte a byte com a API paga no mesmo módulo. Como a implementação é parse de nível A, cada chamada bem-sucedida custa o preço-base publicado US$ 0,002 sem tokens de modelo e sem rede de saída.

Como trocar a ordem dos bytes de um inteiro?

Envie value (decimal ou hex 0x) e width (8, 16, 32 ou 64). A API inverte os bytes nesse recipiente e devolve hex_before, hex_after e os arrays decimais e de bytes correspondentes.

Quanto custa a calculadora de troca de ordem de bytes?

A ferramenta do navegador é gratuita. Pedidos API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →