Conversion du tableau BYTE en INT

J’ai ce genre de code

static void Main(ssortingng[] args) { byte[] array = new byte[2] { 0x00, 0x1f }; Console.WriteLine(BitConverter.ToInt32(array, 0)); } 

Cependant cela ne fonctionne pas. Il lève une exception:

Le tableau de destination n’est pas assez long pour copier tous les éléments de la collection. Vérifiez l’index et la longueur du tableau.

Qu’est-ce qui ne va pas?

Comme son nom l’indique, un Int32 fait 32 bits ou 4 octets. Par conséquent, si vous souhaitez convertir un tableau d’octets en un Int32 , il doit avoir une longueur d’au moins 4 (ou plus précisément, il doit avoir au moins 4 octets après la position de départ).

Si tout ce que vous avez est deux octets, peut-être que vous ToInt16 utiliser ToInt16 ?

Un Int32 est composé de 4 octets, mais le tableau n’en a que 2. Un moyen de contourner ce Int16 est de convertir d’abord en Int16 , puis en Int32

 Console.WriteLine((Int32)(BitConverter.ToInt16(array, 0))); 

Notez que dans cette utilisation spécifique, la conversion de Int16 en Int32 partir de rien ne change rien, car les chiffres sont identiques.

La documentation sur BitConverter.ToInt32 dit:

La méthode ToInt32 convertit les octets d’index startIndex en startIndex + 3 en une valeur Int32.

Vous devez spécifier au moins 4 octets, mais vous n’en avez que 2.