Apa yang kami maksud dengan Byte array? [Tutup]

103

Bisakah seseorang menjelaskan, saya tidak begitu mengerti konsepnya.

Apa itu Byte Array?

Dimana dan kapan kita menggunakannya dalam aplikasi / program?

apa keuntungan dan kerugian menggunakan array byte?

pelamun
sumber
Saya rasa ini masuk akal; karena jika Anda membaca kelas I / O Java; misalnya ByteArrayInputStream; ByteArrayOutputStream. Kecuali seseorang memahami ByteArray, bagaimana cara menjelaskan tentang apa arti ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind

Jawaban:

74

Satu byte adalah 8 bit (data biner).

Array byte adalah array byte (tautologi FTW!).

Anda dapat menggunakan array byte untuk menyimpan kumpulan data biner, misalnya, konten file. Kelemahannya adalah bahwa seluruh konten file harus dimuat ke dalam memori.

Untuk data biner dalam jumlah besar, akan lebih baik menggunakan tipe data streaming jika bahasa Anda mendukungnya.

Phil
sumber
16
Untuk menjadi sangat bertele-tele, satu byte tidak dijamin menjadi 8 bit. Ini tentu saja standar de facto saat ini, tetapi secara historis tidak selalu demikian. en.wikipedia.org/wiki/Byte
JaredPar
14
@ JaredPar: akurat tapi saya pikir itu akan sedikit berlebihan untuk disclaimer diperlukan setiap kali seseorang menyatakan bahwa satu byte adalah 8 bit.
Dinah
6
@Dinah, saya setuju, itu sebabnya saya menambahkan disclaimer yang sombong. Saya kebetulan melihat halaman yang relevan hari ini.
JaredPar
6
Bisakah Anda menyalakan lampu The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi
1
@JeffOrris tidak yakin apa yang Anda maksud dengan "mengubah ke array byte" . Itu bukanlah sesuatu yang biasanya Anda lakukan. Juga, "kurang rentan" terhadap apa?
Phil
56

Saya berasumsi Anda tahu apa itu byte. Array byte hanyalah sebuah area memori yang berisi sekelompok byte yang berdekatan (berdampingan), sehingga masuk akal untuk membicarakannya secara berurutan: byte pertama, byte kedua, dll.

Sama seperti byte dapat menyandikan berbagai jenis dan rentang data (angka dari 0 hingga 255, angka dari -128 hingga 127, karakter tunggal menggunakan ASCII misalnya 'a' atau '%', kode op CPU), setiap byte dalam array byte mungkin salah satu dari hal-hal ini, atau berkontribusi pada beberapa nilai multi-byte seperti angka dengan jangkauan yang lebih besar (misalnya 16-bit unsigned int dari 0..65535), himpunan karakter internasional, string tekstual ("halo"), atau bagian / semua program komputer yang dikompilasi.

Hal penting tentang array byte adalah memberikan akses mentah yang terindeks (cepat), tepat, ke setiap nilai 8-bit yang disimpan di bagian memori tersebut, dan Anda dapat mengoperasikan byte tersebut untuk mengontrol setiap bit. Hal buruknya adalah komputer hanya memperlakukan setiap entri sebagai angka 8-bit independen - yang mungkin yang dihadapi program Anda, atau Anda mungkin lebih suka beberapa tipe data yang kuat seperti string yang melacak panjangnya sendiri dan tumbuh seperlunya, atau angka floating-point yang memungkinkan Anda menyimpan, katakanlah 3,14 tanpa memikirkan representasi yang bijak. Sebagai tipe data, tidak efisien untuk memasukkan atau menghapus data di dekat permulaan larik yang panjang, karena semua elemen berikutnya perlu dikocok untuk membuat atau mengisi celah yang dibuat / diperlukan.

pengguna433534
sumber
1
Penjelasan yang sangat bagus !!!
Sundararaj Govindasamy
11

Dari wikipedia :

Dalam ilmu komputer, struktur data larik atau hanya larik adalah struktur data yang terdiri dari kumpulan elemen (nilai atau variabel), masing-masing diidentifikasi oleh satu atau lebih indeks bilangan bulat, disimpan sehingga alamat setiap elemen dapat dihitung dari indeksnya tupel dengan rumus matematika sederhana.

Jadi ketika Anda mengatakan array byte, Anda mengacu pada array dengan beberapa panjang yang ditentukan (misalnya jumlah elemen) yang berisi kumpulan elemen berukuran byte (8 bit).

Di C # array byte bisa terlihat seperti:

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

Contoh di atas mendefinisikan larik dari 4 elemen, di mana setiap elemen dapat memiliki panjang hingga Byte .

Miguel Sevilla
sumber