Что мы подразумеваем под байтовым массивом? [закрыто]


103

Не мог бы кто-нибудь объяснить, я не совсем понимаю концепцию.

Что такое байтовый массив?

Где и когда мы его используем в приложениях / программах?

каковы преимущества и недостатки использования байтового массива?


Я думаю, это имеет смысл; потому что, если вы читаете классы ввода-вывода Java; например ByteArrayInputStream; ByteArrayOutputStream. Если вы не понимаете ByteArray, как можно прояснить, что означает ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind

Ответы:


75

Байт равен 8 битам (двоичные данные).

Байтовый массив - это массив байтов (тавтология FTW!).

Вы можете использовать байтовый массив для хранения набора двоичных данных, например, содержимого файла. Обратной стороной этого является то, что все содержимое файла должно быть загружено в память.

Для больших объемов двоичных данных лучше использовать потоковый тип данных, если ваш язык поддерживает его.


16
Чтобы стать предельно педантичным, не гарантируется, что байт будет 8-битным. Это, безусловно, де-факто стандарт сегодня, но исторически так было не всегда. en.wikipedia.org/wiki/Byte
JaredPar

14
@JaredPar: точно, но я думаю, что заявление об отказе от ответственности требовалось бы каждый раз, когда кто-то заявляет, что байт равен 8 битам.
Дина

6
@ Дина, согласен, поэтому я добавил педантичный отказ от ответственности. Я просто случайно сегодня просматривал соответствующую страницу.
JaredPar

6
Не могли бы вы включить свет The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi,

1
@JeffOrris не уверен, что вы имеете в виду под «преобразованием в массив байтов» . Это не то, что вы обычно делаете. Кроме того, «менее уязвимы» для чего?
Фил

56

Я полагаю, вы знаете, что такое байт. Массив байтов - это просто область памяти, содержащая группу смежных (расположенных рядом) байтов, поэтому имеет смысл говорить о них по порядку: первый байт, второй байт и т. Д.

Так же, как байты могут кодировать различные типы и диапазоны данных (числа от 0 до 255, числа от -128 до 127, отдельные символы с использованием ASCII, например, 'a' или '%', коды операций ЦП), каждый байт в массиве байтов может быть любой из этих вещей или способствовать некоторым многобайтовым значениям, таким как числа с большим диапазоном (например, 16-битное целое число без знака от 0..65535), международные наборы символов, текстовые строки ("привет") или часть / все скомпилированные компьютерные программы.

Ключевым моментом в массиве байтов является то, что он предоставляет индексированный (быстрый), точный, необработанный доступ к каждому 8-битному значению, хранящемуся в этой части памяти, и вы можете работать с этими байтами для управления каждым битом. Плохо то, что компьютер просто обрабатывает каждую запись как независимое 8-битное число, с которым может иметь дело ваша программа, или вы можете предпочесть какой-нибудь мощный тип данных, такой как строка, которая отслеживает свою длину и увеличивается по мере необходимости, или число с плавающей запятой, которое позволяет сохранить, скажем, 3,14, не думая о поразрядном представлении. В качестве типа данных неэффективно вставлять или удалять данные в начале длинного массива, так как все последующие элементы необходимо перемешать, чтобы создать или заполнить созданный / требуемый пробел.


1
Очень хорошее объяснение !!!
Сундарарадж Говиндасами,

11

Из википедии :

В информатике структура данных массива или просто массив - это структура данных, состоящая из набора элементов (значений или переменных), каждый из которых идентифицируется одним или несколькими целочисленными индексами, хранящимися так, что адрес каждого элемента может быть вычислен по его индексу. кортеж по простой математической формуле.

Таким образом, когда вы говорите «байтовый массив», вы имеете в виду массив определенной длины (например, количества элементов), который содержит набор элементов размером в байты (8 бит).

В C # байтовый массив может выглядеть так:

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

В приведенном выше примере определяется массив из 4 элементов, каждый из которых может иметь длину до байта .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.