¿Qué entendemos por matriz de bytes? [cerrado]

103

¿Podría alguien explicarme, no entiendo exactamente el concepto?

¿Qué es una matriz de bytes?

¿Dónde y cuándo lo usamos en aplicaciones / programas?

¿Cuáles son las ventajas y desventajas de usar una matriz de bytes?

soñador
fuente
Supongo que esto tiene sentido; porque si lees clases de E / S de Java; por ejemplo ByteArrayInputStream; ByteArrayOutputStream. A menos que uno entienda ByteArray, ¿cómo se aclara qué significa ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind

Respuestas:

74

Un byte tiene 8 bits (datos binarios).

Una matriz de bytes es una matriz de bytes (¡tautología FTW!).

Puede utilizar una matriz de bytes para almacenar una colección de datos binarios, por ejemplo, el contenido de un archivo. La desventaja de esto es que todo el contenido del archivo debe cargarse en la memoria.

Para grandes cantidades de datos binarios, sería mejor utilizar un tipo de datos de transmisión continua si su idioma lo admite.

Phil
fuente
16
Para ser extremadamente pedante, no se garantiza que un byte sea de 8 bits. Sin duda, es el estándar de facto de hoy, pero históricamente no siempre ha sido así. en.wikipedia.org/wiki/Byte
JaredPar
14
@JaredPar: exacto, pero creo que sería un poco exagerado necesitar un descargo de responsabilidad cada vez que alguien dice que un byte tiene 8 bits.
Dinah
6
@Dinah, estoy de acuerdo, es por eso que agregué el descargo de responsabilidad pedante. Hoy estaba mirando la página correspondiente.
JaredPar
6
¿Puedes encender un poco de luz The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi
1
@JeffOrris no está seguro de lo que quiere decir con "convertir a una matriz de bytes" . Eso no es algo que normalmente harías. Además, ¿ "menos vulnerable" a qué?
Phil
56

Supongo que sabe lo que es un byte. Una matriz de bytes es simplemente un área de memoria que contiene un grupo de bytes contiguos (uno al lado del otro), de modo que tiene sentido hablar de ellos en orden: el primer byte, el segundo byte, etc.

Así como los bytes pueden codificar diferentes tipos y rangos de datos (números del 0 al 255, números del -128 al 127, caracteres individuales usando ASCII, por ejemplo, 'a' o '%', códigos de operación de la CPU), cada byte en una matriz de bytes puede ser cualquiera de estas cosas, o contribuir a algunos valores de varios bytes, como números con un rango más grande (por ejemplo, 16 bits sin signo int de 0..65535), conjuntos de caracteres internacionales, cadenas textuales ("hola") o parte / todos los programas de computadora compilados.

Lo crucial de una matriz de bytes es que brinda acceso indexado (rápido), preciso y sin procesar a cada valor de 8 bits que se almacena en esa parte de la memoria, y puede operar en esos bytes para controlar cada bit. Lo malo es que la computadora simplemente trata cada entrada como un número independiente de 8 bits, que puede ser con lo que está tratando su programa, o puede que prefiera algún tipo de datos poderoso, como una cadena que realiza un seguimiento de su propia longitud y crece según sea necesario, o un número de punto flotante que le permita almacenar, por ejemplo, 3.14 sin pensar en la representación de bits. Como tipo de datos, es ineficiente insertar o eliminar datos cerca del inicio de una matriz larga, ya que todos los elementos posteriores deben mezclarse para hacer o llenar el espacio creado / requerido.

user433534
fuente
1
Muy buena explicación !!!
Sundararaj Govindasamy
11

De wikipedia :

En informática, una estructura de datos de matriz o simplemente matriz es una estructura de datos que consta de una colección de elementos (valores o variables), cada uno identificado por uno o más índices enteros, almacenados de modo que la dirección de cada elemento pueda calcularse a partir de su índice. tupla mediante una fórmula matemática simple.

Entonces, cuando dice matriz de bytes, se refiere a una matriz de una longitud definida (por ejemplo, número de elementos) que contiene una colección de elementos de tamaño de bytes (8 bits).

En C #, una matriz de bytes podría verse así:

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

El ejemplo anterior define una matriz de 4 elementos, donde cada elemento puede tener hasta un Byte de longitud.

Miguel Sevilla
fuente