Calcolatore inversione ordine byte
0x12345678 diventa 0x78563412 quando i suoi quattro byte vengono invertiti, il passaggio tra l'ordine di rete e la memoria little-endian. Scelga una larghezza di 8, 16, 32 o 64 bit e veda il valore prima e dopo in esadecimale, in decimale e byte per byte. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 0x12345678
- Larghezza
- 32
- Numero di byte
- 4
- Esadecimale prima
- 0x12345678
- Esadecimale dopo
- 0x78563412
- Decimale prima
- 305419896
Le pile di rete, i formati di file e il firmware embedded non sono d’accordo sul fatto che il byte più significativo di un intero debba venire per primo o per ultimo. Un campo lunghezza che sul filo appare come 0x12345678 viene memorizzato come 0x78563412 in memoria little-endian, e il viaggio inverso è altrettanto comune quando Lei scarica un registro e le serve il valore in ordine di rete. Questo calcolatore di inversione dell’ordine dei byte accetta un intero e una larghezza di 8, 16, 32 o 64 bit, inverte i byte in quel contenitore e restituisce il valore esadecimale prima e dopo lo scambio, insieme alle forme decimali e agli array di byte corrispondenti.
Cosa fa uno scambio dell’ordine dei byte a 8, 16, 32 e 64 bit
Un intero senza segno a più byte è una sequenza di ottetti la cui significatività dipende dall’endianness. Scritto nella consueta notazione posizionale, 0x12345678 significa che il byte più significativo è 0x12 e il meno significativo è 0x78. L’archiviazione big-endian dispone quei byte in quello stesso ordine; la little-endian li inverte, così la memoria contiene 78 56 34 12.
Scambiare l’ordine dei byte è esattamente quell’inversione in un contenitore a larghezza fissa: lo scambio a 32 bit di 0x12345678 è 0x78563412, quello a 16 bit di 0x1234 è 0x3412, e un valore a 8 bit non cambia perché un singolo byte non ha un ordine da capovolgere. Uno scambio a 64 bit percorre allo stesso modo otto byte, ed è per questo che 0x0123456789ABCDEF diventa 0xEFCDAB8967452301.
L’hardware chiama questa istruzione bswap; gli aiuti di rete POSIX come htons, htonl, ntohs e ntohl sono la stessa inversione quando l’ordine dell’host è little-endian. Questo calcolatore non indovina la Sua piattaforma e non ha bisogno di un flag di endian di partenza: Lei fornisce l’intero come si scrive (o come stringa hex 0x) e una larghezza, e il risultato è l’intero i cui byte sono l’inverso di quella larghezza.
Applicare lo scambio due volte ripristina il valore originale, il che lo rende un andata e ritorno sicuro per i test che convertono interi dell’host in ordine di rete e ritorno.
Quando serve invertire l'ordine dei byte
Il reverse engineering di protocolli, la costruzione di pacchetti e le sfide binarie CTF hanno sempre bisogno di un bswap attendibile per confrontare un dump hex di Wireshark e un dump di registro little-endian senza capovolgere i byte a mano. I team embedded e firmware convertono costanti di configurazione, semi CRC e numeri magici tra l’ordine di rete e quello dell’MCU quando scrivono intestazioni o controllano immagini flash.
Chi insegna l’endianness ha bisogno di un oracolo dal vivo che tiene fisso l’intero e inverte solo i byte a una larghezza scelta, così gli studenti vedono perché htons su 0x1234 è 0x3412 su un host little-endian. Gli script di integrazione continua che producono vettori di prova per i serializzatori traggono vantaggio da una piccola funzione pura invece di trascinare un’intera cassetta degli attrezzi binaria per un solo intero. Una convalida fallita non consuma il saldo.
Tenga le richieste piccole, fissi le stringhe hex nei test e otterrà uno scambio di endian riproducibile per compiti, analizzatori e worker di bordo.
Casi d'uso
Ordine di rete e ordine dell’host
Converta un intero a 16 o 32 bit tra il formato sul filo big-endian e la memoria little-endian dell’host, come fanno htons, htonl, ntohs e ntohl.
Costanti firmware e dump hex
Inverta i byte di numeri magici, lunghezze e semi CRC quando un dump hex e un letterale intero C non concordano sull’endianness.
Insegnare l’endianness
Mostri entrambe le forme esadecimali dello stesso intero a 8, 16, 32 o 64 bit perché gli studenti vedano che uno scambio inverte soltanto i byte.
Domande frequenti
È la stessa cosa di htons o bswap?
Sì. A 16 bit coincide con htons/ntohs su un host little-endian; a 32 bit coincide con htonl/ntohl e un bswap a 32 bit; a 64 bit coincide con un bswap di 8 byte.
Che succede se il valore non sta nella larghezza?
Il calcolatore non avvolge né tronca: scelga un contenitore più largo oppure invii un valore che ci sta.
Sono ammessi i numeri negativi?
Sì. Un valore negativo viene convertito in complemento a due alla larghezza scelta, poi si invertono i byte di quel motivo senza segno.
Devo indicare se il mio valore è big-endian o little-endian?
No. Scriva l'intero come lo scriverebbe lei, in decimale o in esadecimale con 0x, e scelga la larghezza: il risultato è l'intero con i byte invertiti dentro quella larghezza, senza supporre nulla sulla sua macchina.
Invertendo due volte si torna al valore originale?
Sì. Invertire i byte due volte con la stessa larghezza restituisce esattamente il valore di partenza, perciò è utile per verificare conversioni di andata e ritorno tra l'ordine della macchina e l'ordine di rete.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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}'const res = await fetch("https://api.kit.forhosting.com/dev/byte-order-swap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "0x12345678",
"width": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/byte-order-swap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "0x12345678",
"width": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/byte-order-swap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"0x12345678","width":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"0x12345678","width":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/byte-order-swap", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"value": "0x12345678",
"width": 32
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.byte_order_swap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
I valori che non stanno nella larghezza scelta, i campi mancanti e le larghezze illegali falliscono con invalid_input invece di avvolgere in silenzio.
Contratto di ingresso, forma della risposta ed errori
L’intero deve stare nella larghezza scelta: i valori non negativi possono essere al massimo due elevato alla larghezza meno uno, e i negativi si interpretano come complemento a due e devono stare nell’intervallo con segno di quella larghezza. I campi numerici opzionali vengono omessi anziché impostati a null quando un risultato a 64 bit non sarebbe esatto. Invii con POST un corpo JSON con due campi obbligatori: value, l’intero da scambiare, e width, la larghezza in bit del contenitore. Value può essere un numero JSON, una stringa decimale, una stringa esadecimale con prefisso 0x oppure, in opzione, una stringa binaria 0b; sono accettati gli alias number, n, integer e hex. Width deve essere 8, 16, 32 o 64 (alias bits, bit_width e size) e può arrivare come numero o come token breve tipo 32bit. Un overflow, un campo mancante, una stringa vuota, un non intero o una larghezza fuori dall’insieme chiuso falliscono con invalid_input indicando il campo; tali fallimenti non vengono fatturati. In caso di successo il corpo include width e byte_count; hex_before e hex_after come stringhe 0x maiuscole riempite di zeri; decimal_before e decimal_after come stringhe decimali esatte così i risultati a 64 bit non perdono cifre; bytes_before e bytes_after come array MSB-first da 0–255; e, quando ciascuna magnitudine sta nell’intervallo degli interi sicuri di JavaScript, decimal_before_number e decimal_after_number. Esempio: value 0x12345678 e width 32 producono hex_before 0x12345678, hex_after 0x78563412 e i byte 18,52,86,120 invertiti in 120,86,52,18.
Dove un’API di inversione dell’ordine dei byte vale il costo
I siti di contenuti che puntano a «calcolatore inversione ordine byte» ottengono un percorso browser gratuito che coincide byte per byte con l’API a pagamento sullo stesso modulo. Poiché l’implementazione è parse di livello A, ogni chiamata riuscita costa la tariffa base pubblicata $0.002 senza token di modello né rete in uscita.
Domande tecniche
Come si inverte l’ordine dei byte di un intero?
Invii value (decimale o hex 0x) e width (8, 16, 32 o 64). L’API inverte i byte in quel contenitore e restituisce hex_before, hex_after e gli array decimali e di byte corrispondenti.
Quanto costa il calcolatore di inversione dell’ordine dei byte?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo KIT prepagato a $0.002 per chiamata riuscita; l’ingresso non valido non viene fatturato.