Qu'entend-on par tableau d'octets? [fermé]

103

Quelqu'un pourrait-il expliquer s'il vous plaît, je ne comprends pas exactement le concept.

Qu'est-ce qu'un tableau d'octets?

Où et quand nous l'utilisons dans des applications / programmes?

Quels sont les avantages et les inconvénients de l'utilisation d'un tableau d'octets?

rêveur
la source
Je suppose que cela a du sens; parce que si vous lisez les classes d'E / S Java; par exemple ByteArrayInputStream; ByteArrayOutputStream. À moins de comprendre ByteArray, comment clarifier ce que signifie ByteArrayInputStream, ByteArrayOutputStream?
CuriousMind

Réponses:

74

Un octet est de 8 bits (données binaires).

Un tableau d'octets est un tableau d'octets (tautologie FTW!).

Vous pouvez utiliser un tableau d'octets pour stocker une collection de données binaires, par exemple, le contenu d'un fichier. L'inconvénient est que tout le contenu du fichier doit être chargé en mémoire.

Pour de grandes quantités de données binaires, il serait préférable d'utiliser un type de données en continu si votre langue le prend en charge.

Phil
la source
16
Pour devenir extrêmement pédant, il n'est pas garanti qu'un octet soit 8 bits. C'est certainement la norme de facto d'aujourd'hui, mais historiquement, cela n'a pas toujours été le cas. en.wikipedia.org/wiki/Byte
JaredPar
14
@JaredPar: précis, mais je pense que ce serait un peu exagéré qu'un avertissement soit nécessaire chaque fois que quelqu'un déclare qu'un octet est de 8 bits.
Dinah
6
@Dinah, je suis d'accord, c'est pourquoi j'ai ajouté l'avertissement pédant. Je viens de regarder la page pertinente aujourd'hui.
JaredPar
6
Pouvez-vous s'il vous plaît mettre un peu de lumière The downside to this is that the entire file contents must be loaded into memory.?
CodeYogi
1
@JeffOrris ne sais pas ce que vous entendez par "conversion en tableau d'octets" . Ce n'est pas quelque chose que vous feriez généralement. Aussi, "moins vulnérable" à quoi?
Phil
56

Je suppose que vous savez ce qu'est un octet. Un tableau d'octets est simplement une zone de mémoire contenant un groupe d'octets contigus (côte à côte), de sorte qu'il est logique d'en parler dans l'ordre: le premier octet, le deuxième octet etc.

Tout comme les octets peuvent encoder différents types et plages de données (nombres de 0 à 255, nombres de -128 à 127, caractères uniques en ASCII, par exemple 'a' ou '%', codes opération CPU), chaque octet dans un tableau d'octets peut être l'une de ces choses, ou contribuer à certaines valeurs multi-octets telles que des nombres avec une plage plus grande (par exemple un entier non signé 16 bits de 0..65535), des jeux de caractères internationaux, des chaînes textuelles ("bonjour"), ou une partie / tous les programmes informatiques compilés.

La chose cruciale à propos d'un tableau d'octets est qu'il donne un accès indexé (rapide), précis et brut à chaque valeur de 8 bits stockée dans cette partie de la mémoire, et vous pouvez utiliser ces octets pour contrôler chaque bit. La mauvaise chose est que l'ordinateur traite simplement chaque entrée comme un nombre indépendant de 8 bits - ce qui peut être ce à quoi votre programme traite, ou vous pouvez préférer un type de données puissant tel qu'une chaîne qui garde une trace de sa propre longueur et grandit si nécessaire, ou un nombre à virgule flottante qui vous permet de stocker par exemple 3,14 sans penser à la représentation par bit. En tant que type de données, il est inefficace d'insérer ou de supprimer des données près du début d'un long tableau, car tous les éléments suivants doivent être mélangés pour créer ou combler le vide créé / requis.

user433534
la source
1
Très bonne explication !!!
Sundararaj Govindasamy
11

De wikipedia :

En informatique, une structure de données de tableau ou simplement un tableau est une structure de données constituée d'un ensemble d'éléments (valeurs ou variables), chacun identifié par un ou plusieurs indices entiers, stockés de manière à ce que l'adresse de chaque élément puisse être calculée à partir de son index tuple par une formule mathématique simple.

Ainsi, lorsque vous dites tableau d'octets, vous faites référence à un tableau d'une longueur définie (par exemple, le nombre d'éléments) qui contient une collection d'éléments de la taille d'octets (8 bits).

En C #, un tableau d'octets pourrait ressembler à:

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

L'exemple ci-dessus définit un tableau de 4 éléments, où chaque élément peut avoir jusqu'à un octet de longueur.

Miguel Sevilla
la source