Cosa si intende per Byte array? [chiuso]


103

Qualcuno potrebbe spiegare, non capisco esattamente il concetto.

Cos'è un Byte Array?

Dove e quando lo usiamo in applicazioni / programmi?

quali sono i vantaggi e gli svantaggi dell'utilizzo di un array di byte?


Immagino che questo abbia senso; perché se leggi le classi I / O Java; ad esempio ByteArrayInputStream; ByteArrayOutputStream. A meno che non si capisca ByteArray, come si fa a chiarire cosa significa ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind

Risposte:


74

Un byte è di 8 bit (dati binari).

Un array di byte è un array di byte (tautology FTW!).

È possibile utilizzare una matrice di byte per memorizzare una raccolta di dati binari, ad esempio, il contenuto di un file. Lo svantaggio di questo è che l'intero contenuto del file deve essere caricato in memoria.

Per grandi quantità di dati binari, sarebbe meglio utilizzare un tipo di dati di streaming se la tua lingua lo supporta.


16
Per diventare estremamente pedanti, non è garantito che un byte sia 8 bit. È certamente lo standard di fatto di oggi, ma storicamente non è sempre stato così. en.wikipedia.org/wiki/Byte
JaredPar

14
@ JaredPar: accurato ma penso che sarebbe un po 'eccessivo se fosse necessario un disclaimer ogni volta che qualcuno afferma che un byte è di 8 bit.
Dinah

6
@Dinah, sono d'accordo, ecco perché ho aggiunto il pedante disclaimer. Oggi mi è capitato di guardare la pagina pertinente.
JaredPar

6
Puoi accendere un po 'di luce per favore The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi

1
@ JeffOrris non è sicuro di cosa intendi per "conversione in un array di byte" . Non è qualcosa che faresti normalmente. Inoltre, "meno vulnerabile" a cosa?
Phil

56

Presumo che tu sappia cos'è un byte. Un array di byte è semplicemente un'area di memoria contenente un gruppo di byte contigui (affiancati), in modo tale che abbia senso parlarne in ordine: il primo byte, il secondo byte ecc ..

Proprio come i byte possono codificare diversi tipi e intervalli di dati (numeri da 0 a 255, numeri da -128 a 127, caratteri singoli che utilizzano ASCII es. 'A' o '%', codici operativi CPU), ogni byte in un array di byte può essere una di queste cose, o contribuire ad alcuni valori multibyte come i numeri con un intervallo più ampio (ad es. int senza segno a 16 bit da 0..65535), set di caratteri internazionali, stringhe di testo ("ciao") o parte / tutti i programmi per computer compilati.

La cosa cruciale di un array di byte è che fornisce un accesso indicizzato (veloce), preciso e grezzo a ciascun valore a 8 bit memorizzato in quella parte di memoria, e puoi operare su quei byte per controllare ogni singolo bit. La cosa negativa è che il computer tratta ogni voce come un numero a 8 bit indipendente, che potrebbe essere ciò con cui ha a che fare il tuo programma, oppure potresti preferire un tipo di dati potente come una stringa che tiene traccia della propria lunghezza e cresce se necessario, o un numero in virgola mobile che ti consenta di memorizzare 3.14 senza pensare alla rappresentazione bit-wise. Come tipo di dati, è inefficiente inserire o rimuovere dati vicino all'inizio di un array lungo, poiché tutti gli elementi successivi devono essere mescolati per creare o riempire il vuoto creato / richiesto.


1
Ottima spiegazione !!!
Sundararaj Govindasamy

11

Da wikipedia :

In informatica, una struttura dati array o semplicemente array è una struttura dati costituita da una raccolta di elementi (valori o variabili), ciascuno identificato da uno o più indici interi, memorizzati in modo che l'indirizzo di ogni elemento possa essere calcolato dal suo indice tupla con una semplice formula matematica.

Quindi, quando dici array di byte, ti riferisci a un array di una certa lunghezza definita (ad es. Numero di elementi) che contiene una raccolta di elementi della dimensione di byte (8 bit).

In C # un array di byte potrebbe essere simile a:

byte[] bytes = { 3, 10, 8, 25 };

L'esempio sopra definisce una matrice di 4 elementi, in cui ogni elemento può avere una lunghezza massima di un byte .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.