Calcolatore array di byte in intero
I byte 0, 1, 2, 3 letti in big-endian formano 66051, cioè 0x00010203 in esadecimale; letti in little-endian formano 50462976. Inserisca da uno a otto byte, scelga l'ordine e ottenga l'intero esatto in decimale ed esadecimale. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Byte
- 0, 1, 2, 3
- Ordine dei byte
- Big
- Numero di byte
- 4
- Larghezza in bit
- 32
- Decimale
- 66051
- Hex
- 0x00010203
I protocolli binari, i formati di file e i pacchetti di rete memorizzano interi multi-byte come sequenze ordinate di ottetti. Gli stessi quattro ottetti rappresentano numeri del tutto diversi se interpretati in big-endian oppure little-endian, quindi ingegneri e studenti necessitano di un metodo deterministico per convertire un array di byte in un singolo intero senza indovinare l’ordine degli shift. Questo calcolatore da array di byte a intero accetta da uno a otto valori di byte senza segno (ciascuno tra 0 e 255) e una scelta di endianness, quindi restituisce l’intero senza segno combinato come stringa decimale esatta, un numero JavaScript sicuro quando il valore vi entra, e la forma esadecimale con zeri di riempimento e prefisso 0x. Lo usi per decodificare prefissi di lunghezza, magic number, contatori di sequenza e campi multi-byte da dump hex o catture di pacchetti.
Come l’ordine dei byte trasforma un array in un intero
Un intero senza segno multi-byte è semplicemente un numero posizionale in base 256. Con n byte B0, B1, …, Bn−1 ciascuno nell’intervallo 0–255, l’ordine big-endian tratta B0 come byte più significativo: il valore è B0×256^(n−1) + B1×256^(n−2) + … + Bn−1×256^0. L’ordine little-endian inverte la significatività così che il primo elemento dell’array è il byte meno significativo: il valore è B0×256^0 + B1×256^1 + … + Bn−1×256^(n−1).
Quelle due formule spiegano perché lo stesso array [0x01, 0x02, 0x03, 0x04] diventa 0x01020304 (16909060 in decimale) in modalità big-endian e 0x04030201 (67305985 in decimale) in modalità little-endian. Protocolli di rete come TCP/IP, la maggior parte dei formati di rete e molti header di file usano big-endian (ordine di rete). Layout di memoria delle macchine x86 e x86-64, campi PE di Windows e gran parte dell’ecosistema little-endian memorizzano l’LSB per primo.
Questa capacità non indovina la Sua piattaforma: Lei deve indicare l’endianness in modo esplicito affinché un dump hex da una cattura di rete e un dump della memoria di un processo Intel si convertano entrambi correttamente. L’implementazione accumula l’intero con shift esatti BigInt di otto bit per byte, così i risultati restano esatti bit a bit per ogni larghezza da uno a otto byte senza arrotondamento in virgola mobile.
Dove uno strumento da byte a intero dimostra il proprio valore
Il reverse engineering di protocolli, le challenge binarie CTF e il firmware embedded richiedono di continuo di convertire brevi sequenze di byte da dump hex in interi leggibili per lunghezze, offset, timestamp e identificatori. I docenti che spiegano l’endianness necessitano di un oracolo live che inverta solo il flag di ordine dei byte tenendo l’array fisso, così gli studenti vedono perché l’ordine di rete e quello dell’host divergono sullo stesso dump di memoria.
Script di integrazione continua che analizzano header binari fissi in Node o edge worker traggono vantaggio da una piccola funzione pura invece di tirarsi dietro un’intera libreria di parsing binario per un solo campo multi-byte. La validazione fallita non consuma saldo. Mantenga le richieste a al massimo otto byte (la larghezza comune dei campi uint64), fissi decimal e hex nei test e ottiene una decodifica di interi riproducibile per laboratori di pacchetti, walkthrough di dump hex e automazione senza erigere un helper di shift-and-mask in ogni linguaggio che distribuisce.
Casi d'uso
Decodificare campi multi-byte da dump hex di pacchetti
Incolli byte di lunghezza, porta o numero di sequenza da una cattura, scelga big o little endian e legga l’intero decimale esatto e l’hex riempito del campo.
Controlli CI per parser di header binari
Verifichi che il Suo unpacker specifico del linguaggio coincida con questo oracolo deterministico per casi da 1–8 byte big e little endian senza deriva in virgola mobile.
Domande frequenti
Qual è la differenza tra big-endian e little-endian?
Big-endian tratta il primo elemento dell’array come byte più significativo (ordine di rete). Little-endian tratta il primo elemento come byte meno significativo (comune su host x86).
Perché la lunghezza massima è di otto byte?
Otto byte coprono larghezze senza segno fino a 64 bit (uint8–uint64), in linea con la maggior parte dei campi di protocolli e formati di file. Interi multiprecisione più ampi restano fuori dallo scopo di questo calcolatore.
Quale ordine dei byte usano i pacchetti di rete?
I protocolli di rete come TCP/IP, la maggior parte dei formati di trasmissione e molte intestazioni di file usano il big-endian, detto anche ordine di rete. La memoria x86 e le intestazioni degli eseguibili Windows usano il little-endian, quindi scelga l'ordine in base alla provenienza dei byte.
Perché il risultato esadecimale mantiene gli zeri iniziali?
Perché viene completato a due cifre esadecimali per byte, così la larghezza del campo resta visibile: quattro byte mostrano otto cifre e un primo byte a zero non sparisce mai. Il decimale invece viene mostrato senza zeri iniziali.
Come si trasforma un elenco di byte in un solo numero?
Ogni byte è una cifra in base 256. In big-endian il primo byte è il più significativo e si moltiplica per la potenza di 256 più alta; in little-endian il primo è quello che pesa meno. Il risultato è esatto fino a otto byte.
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/bytes-to-integer \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":[0,1,2,3],"endianness":"big"}'const res = await fetch("https://api.kit.forhosting.com/dev/bytes-to-integer", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/bytes-to-integer",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/bytes-to-integer", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bytes":[0,1,2,3],"endianness":"big"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bytes":[0,1,2,3],"endianness":"big"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/bytes-to-integer", 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
{
"bytes": [
0,
1,
2,
3
],
"endianness": "big"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bytes_to_integer",
"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
Come l’ordine dei byte trasforma un array in un intero
Il campo opzionale decimal_number compare solo quando il risultato senza segno rientra nell’intervallo degli interi sicuri di JavaScript (fino a 2^53−1); i valori più ampi restituiscono comunque la stringa decimale esatta e l’hex così i client non perdono i bit di basso ordine.
Contratto di ingresso, campi di risposta ed errori di validazione
Endianness assente o un token non riconosciuto fallisce pure con un messaggio chiaro che elenca i valori ammessi. Gli stessi byte con little endianness producono decimal 50462976 e hex 0x03020100. Array vuoti, più di otto elementi, non interi e valori fuori da 0–255 falliscono con invalid_input indicando il problema; tali fallimenti non vengono addebitati. In caso di successo il corpo restituisce l’array bytes normalizzato e l’endianness canonica (sempre big o little), più byte_count, bit_width (otto volte la lunghezza), decimal come stringa in base 10 senza zeri iniziali tranne per lo zero stesso, e hex come stringa maiuscola con prefisso 0x riempita a due cifre per byte di ingresso così le larghezze di campo del pacchetto restano visivamente stabili. Quando l’intero è al massimo Number.MAX_SAFE_INTEGER, decimal_number è incluso come numero JSON per comodità nei linguaggi che preferiscono tipi numerici; per valori senza segno più grandi quel campo è omesso anziché impostato a null, secondo la regola del framework per cui le uscite opzionali spariscono invece di inquinare i client con null. Esempio: bytes [0, 1, 2, 3] con endianness big produce decimal 66051, hex 0x00010203, bit_width 32 e decimal_number 66051.
Dove uno strumento da byte a intero dimostra il proprio valore
Poiché l’implementazione è pure parse di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello e senza rete in uscita.
Casi di integrazione
Insegnare l’endianness con un array di byte fisso
Tenga fissi i byte [0x12, 0x34, 0x56, 0x78], cambi l’endianness e mostri agli studenti come l’ordine di rete e il little-endian dell’host producano interi diversi.
Domande tecniche
Come converto un array di byte in un intero?
Invii bytes come array di 1–8 interi da 0–255 e endianness come big o little. L’API restituisce il valore senza segno combinato in decimale (stringa) e hex (prefisso 0x, riempito di zeri).
Quando viene omesso decimal_number?
Quando il risultato senza segno supera l’intervallo degli interi sicuri di JavaScript (2^53−1). La stringa decimale esatta e l’hex sono sempre presenti; il campo numerico opzionale è omesso anziché null.
Quanto costa il calcolatore da array di byte a intero?
Lo strumento nel browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l’input non valido non viene addebitato.