Co rozumiemy przez tablicę bajtów? [Zamknięte]


103

Czy mógłby ktoś wyjaśnić, nie do końca rozumiem koncepcję.

Co to jest tablica bajtów?

Gdzie i kiedy używamy go w aplikacjach / programach?

jakie są zalety i wady używania tablicy bajtów?


Myślę, że to ma sens; ponieważ jeśli czytasz klasy Java I / O; na przykład ByteArrayInputStream; ByteArrayOutputStream. Jeśli ktoś nie rozumie ByteArray, jak można wyjaśnić, co oznacza ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind,

Odpowiedzi:


75

Bajt to 8 bitów (dane binarne).

Tablica bajtów to tablica bajtów (tautologia FTW!).

Możesz użyć tablicy bajtów do przechowywania kolekcji danych binarnych, na przykład zawartości pliku. Wadą tego jest to, że cała zawartość pliku musi zostać załadowana do pamięci.

W przypadku dużych ilości danych binarnych lepiej byłoby użyć typu danych strumieniowych, jeśli Twój język go obsługuje.


16
Aby uzyskać wyjątkowo pedantyczny, bajt nie ma gwarancji, że będzie miał 8 bitów. Z pewnością jest to de facto dzisiaj standard, ale historycznie nie zawsze tak było. en.wikipedia.org/wiki/Byte
JaredPar

14
@JaredPar: dokładne, ale myślę, że byłoby trochę przesadą, gdyby zrzeczenie się było potrzebne za każdym razem, gdy ktoś stwierdza, że ​​bajt ma 8 bitów.
Dinah

6
@Dinah, zgadzam się, dlatego dodałem pedantyczne zastrzeżenie. Właśnie dzisiaj patrzyłem na odpowiednią stronę.
JaredPar

6
Czy możesz zapalić trochę światła The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi,

1
@JeffOrris nie jest pewien, co masz na myśli przez „konwersję do tablicy bajtów” . To nie jest coś, co zazwyczaj robisz. Poza tym „mniej podatny” na co?
Phil

56

Zakładam, że wiesz, co to jest bajt. Tablica bajtów to po prostu obszar pamięci zawierający grupę sąsiadujących (obok siebie) bajtów, dlatego warto mówić o nich w kolejności: pierwszy bajt, drugi bajt itd.

Tak jak bajty mogą kodować różne typy i zakresy danych (liczby od 0 do 255, liczby od -128 do 127, pojedyncze znaki przy użyciu ASCII, np. „A” lub „%”, kody operacyjne procesora), każdy bajt w tablicy bajtów może być dowolną z tych rzeczy lub przyczyniać się do niektórych wartości wielobajtowych, takich jak liczby z większym zakresem (np. 16-bitowa liczba int bez znaku od 0..65535), międzynarodowe zestawy znaków, ciągi tekstowe („hello”) lub część / wszystkie skompilowane programy komputerowe.

Kluczową cechą tablicy bajtów jest to, że zapewnia indeksowany (szybki), dokładny, surowy dostęp do każdej wartości 8-bitowej przechowywanej w tej części pamięci i można operować na tych bajtach, aby kontrolować każdy pojedynczy bit. Złe jest to, że komputer po prostu traktuje każdy wpis jako niezależną 8-bitową liczbę - która może być tym, z czym ma do czynienia twój program, lub możesz preferować jakiś potężny typ danych, taki jak ciąg, który śledzi swoją własną długość i rośnie w razie potrzeby lub liczbę zmiennoprzecinkową, która pozwala zapisać, powiedzmy, 3.14 bez zastanawiania się nad reprezentacją bitową. Jako typ danych nieefektywne jest wstawianie lub usuwanie danych w pobliżu początku długiej tablicy, ponieważ wszystkie kolejne elementy muszą być przetasowane, aby utworzyć lub wypełnić utworzoną / wymaganą lukę.


1
Bardzo dobre wyjaśnienie !!!
Sundararaj Govindasamy

11

Z Wikipedii :

W informatyce struktura danych tablicowych lub po prostu tablica to struktura danych składająca się ze zbioru elementów (wartości lub zmiennych), z których każdy jest identyfikowany przez jeden lub więcej indeksów liczb całkowitych, przechowywanych w taki sposób, że adres każdego elementu można obliczyć na podstawie jego indeksu krotkę według prostego wzoru matematycznego.

Więc kiedy mówisz tablica bajtowa, masz na myśli tablicę o określonej długości (np. Liczba elementów), która zawiera zbiór elementów o rozmiarze bajtów (8 bitów).

W języku C # tablica bajtów mogłaby wyglądać następująco:

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

Powyższy przykład definiuje tablicę 4 elementów, przy czym każdy element może mieć długość do jednego bajta .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.