Byte dizisi ile ne demek istiyoruz? [kapalı]


103

Lütfen birisi açıklayabilir mi, kavramı tam olarak anlamadım.

Bayt Dizisi nedir?

Uygulamalarda / programlarda nerede ve ne zaman kullanıyoruz?

bayt dizisi kullanmanın avantajları ve dezavantajları nelerdir?


Sanırım bu mantıklı; çünkü Java I / O sınıflarını okursanız; örneğin ByteArrayInputStream; ByteArrayOutputStream. ByteArray anlaşılmadığı sürece, ByteArrayInputStream, ByteArrayOutputStream'in ne anlama geldiğini nasıl açıklayabiliriz?
CuriousMind

Yanıtlar:


75

Bir bayt 8 bittir (ikili veri).

Bir bayt dizisi, bir bayt dizisidir (tautology FTW!).

Bir dosyanın içeriği gibi bir ikili veri koleksiyonunu depolamak için bir bayt dizisi kullanabilirsiniz. Bunun dezavantajı, tüm dosya içeriğinin belleğe yüklenmesi gerektiğidir.

Büyük miktarda ikili veri için, diliniz destekliyorsa akış veri türü kullanmak daha iyi olur.


16
Son derece bilgiçlikçi olmak için, bir baytın 8 bit olacağı garanti edilmez. Bu kesinlikle bugünün fiili standardıdır, ancak tarihsel olarak durum her zaman böyle değildir. en.wikipedia.org/wiki/Byte
JaredPar

14
@JaredPar: doğru, ancak birisi baytın 8 bit olduğunu her bildirdiğinde bir feragatnameye ihtiyaç duyulmasının biraz abartılı olacağını düşünüyorum.
Dinah

6
@Dinah, kabul ediyorum, bu yüzden bilgiçlik taslayan feragatnameyi ekledim. Bugün sadece ilgili sayfaya bakıyordum.
JaredPar

6
Lütfen biraz ışık verir The downside to this is that the entire file contents must be loaded into memory.misin?
CodeYogi

1
@JeffOrris "bayt dizisine dönüştürmek" ile ne demek istediğinizden emin değil . Bu, tipik olarak yapacağınız bir şey değildir. Ayrıca, neye karşı "daha az savunmasız" ?
Phil

56

Baytın ne olduğunu bildiğinizi varsayıyorum. Bir bayt dizisi, bir grup bitişik (yan yana) bayt içeren bir bellek alanıdır, öyle ki bunlar hakkında sırayla konuşmak mantıklıdır: ilk bayt, ikinci bayt vb.

Baytların farklı veri türlerini ve aralıklarını (0'dan 255'e kadar sayılar, -128'den 127'ye kadar sayılar, ASCII kullanan tek karakterler, örneğin 'a' veya '%', CPU işlem kodları) kodlayabildiği gibi, her bayt bir bayt dizisinde bunlardan herhangi biri olabilir veya daha geniş aralıklı sayılar (ör. 16-bit işaretsiz int 0,65535), uluslararası karakter kümeleri, metin dizeleri ("merhaba") veya parça / tüm derlenmiş bilgisayar programları.

Bir bayt dizisi ile ilgili en önemli şey, belleğin o bölümünde depolanan her 8 bitlik değere dizinli (hızlı), hassas, ham erişim sağlaması ve her bir biti kontrol etmek için bu baytlar üzerinde çalışabilmenizdir. Kötü olan şey, bilgisayarın her girişi bağımsız bir 8 bitlik sayı olarak ele almasıdır - bu programınızın uğraştığı şey olabilir veya kendi uzunluğunu takip eden ve büyüyen bir dize gibi bazı güçlü veri türlerini tercih edebilirsiniz. gerektiğinde veya bit bazında gösterimi düşünmeden 3,14 diyelim saklamanıza izin veren bir kayan nokta numarası. Bir veri türü olarak, uzun bir dizinin başlangıcına yakın veri eklemek veya çıkarmak yetersizdir, çünkü oluşturulan / gerekli boşluğu oluşturmak veya doldurmak için sonraki tüm öğelerin karıştırılması gerekir.


1
Çok iyi bir açıklama !!!
Sundararaj Govindasamy

11

Gönderen wikipedia :

Bilgisayar biliminde, bir dizi veri yapısı veya basit bir dizi, her biri bir veya daha fazla tamsayı indeksi ile tanımlanan, her bir öğenin adresinin indeksinden hesaplanabilmesi için depolanan bir öğeler koleksiyonundan (değerler veya değişkenler) oluşan bir veri yapısıdır. basit bir matematiksel formülle tuple.

Dolayısıyla, bayt dizisi dediğinizde, bayt (8 bit) boyutlu öğelerden oluşan bir koleksiyon içeren belirli uzunlukta (örneğin öğe sayısı) bir diziye atıfta bulunuyorsunuz.

C # 'da bir bayt dizisi şöyle görünebilir:

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

Yukarıdaki örnek 4 öğeden oluşan bir diziyi tanımlar, burada her öğe bir Byte uzunluğunda olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.