O que queremos dizer com array de bytes? [fechadas]

103

Alguém poderia me explicar, eu não entendi exatamente o conceito.

O que é um Byte Array?

Onde e quando o usamos em aplicativos / programas?

quais são as vantagens e desvantagens de usar uma matriz de bytes?

sonhador
fonte
Acho que isso faz sentido; porque se você ler classes de E / S Java; por exemplo, ByteArrayInputStream; ByteArrayOutputStream. A menos que se entenda ByteArray, como esclarecer o que ByteArrayInputStream, ByteArrayOutputStream significa?
CuriousMind de

Respostas:

74

Um byte tem 8 bits (dados binários).

Uma matriz de bytes é uma matriz de bytes (tautologia FTW!).

Você pode usar uma matriz de bytes para armazenar uma coleção de dados binários, por exemplo, o conteúdo de um arquivo. A desvantagem disso é que todo o conteúdo do arquivo deve ser carregado na memória.

Para grandes quantidades de dados binários, seria melhor usar um tipo de dados de streaming se sua linguagem oferecer suporte.

Phil
fonte
16
Para ser extremamente pedante, não é garantido que um byte tenha 8 bits. Certamente é o padrão de fato de hoje, mas historicamente nem sempre foi o caso. en.wikipedia.org/wiki/Byte
JaredPar
14
@JaredPar: correto, mas acho que seria um pouco exagero que um aviso de isenção de responsabilidade fosse necessário toda vez que alguém dissesse que um byte tem 8 bits.
Diná,
6
@Dinah, concordo, é por isso que acrescentei a pedante negação. Acontece que estou olhando a página relevante hoje.
JaredPar
6
Você pode acender alguma luz The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi
1
@JeffOrris não tem certeza do que você entende por "converter para uma matriz de bytes" . Isso não é algo que você normalmente faria. Além disso, "menos vulnerável" a quê?
Phil
56

Presumo que você saiba o que é um byte. Uma matriz de bytes é simplesmente uma área da memória contendo um grupo de bytes contíguos (lado a lado), de modo que faz sentido falar sobre eles em ordem: o primeiro byte, o segundo byte etc.

Assim como os bytes podem codificar diferentes tipos e intervalos de dados (números de 0 a 255, números de -128 a 127, caracteres únicos usando ASCII, por exemplo, 'a' ou '%', códigos de operação da CPU), cada byte em uma matriz de bytes pode ser qualquer uma dessas coisas, ou contribuir para alguns valores de bytes múltiplos, como números com intervalo maior (por exemplo, int de 16 bits sem sinal de 0..65535), conjuntos de caracteres internacionais, strings de texto ("olá") ou parte / todos os programas de computador compilados.

O mais importante sobre uma matriz de bytes é que ela dá acesso indexado (rápido), preciso e bruto a cada valor de 8 bits armazenado naquela parte da memória, e você pode operar nesses bytes para controlar cada bit. O ruim é que o computador apenas trata cada entrada como um número independente de 8 bits - que pode ser o que seu programa está lidando, ou você pode preferir algum tipo de dados poderoso, como uma string que mantém o controle de seu próprio comprimento e cresce conforme necessário, ou um número de ponto flutuante que permite armazenar, digamos, 3,14 sem pensar sobre a representação bit a bit. Como um tipo de dados, é ineficiente inserir ou remover dados próximo ao início de uma longa matriz, pois todos os elementos subsequentes precisam ser embaralhados para fazer ou preencher a lacuna criada / necessária.

user433534
fonte
1
Explicação muito boa !!!
Sundararaj Govindasamy
11

Da wikipedia :

Na ciência da computação, uma estrutura de dados array ou simplesmente array é uma estrutura de dados que consiste em uma coleção de elementos (valores ou variáveis), cada um identificado por um ou mais índices inteiros, armazenados de forma que o endereço de cada elemento possa ser calculado a partir de seu índice tupla por uma fórmula matemática simples.

Portanto, quando você diz array de bytes, está se referindo a um array de algum comprimento definido (por exemplo, número de elementos) que contém uma coleção de elementos de tamanho de bytes (8 bits).

Em C #, uma matriz de bytes pode ser semelhante a:

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

O exemplo acima define uma matriz de 4 elementos, onde cada elemento pode ter até um byte de comprimento.

Miguel Sevilla
fonte