2012-04-26 25 views
6

Estoy intentando convertir una matriz de bytes en una matriz int y luego convertir la matriz de bytes en una matriz int.Error al convertir una matriz de bytes a una matriz int en C#

Para la conversión de matriz de bytes a int matriz He utilizado este código:

int[] iArray = new int[someSize]; 
byte[] bArray = new byte[iArray.Length * sizeof(int)]; 
Buffer.BlockCopy(iArray, 0,bArray, 0, bArray.Length); // This code works correctly. 

Pero cuando se convierte de la matriz de bytes en el int matriz, los valores de la matriz iArray2 se convierte en falsa cuando el valor en el iArray matriz es mayor que 256 (puede ser que es desbordamiento, no sé.)

// What is the error in this code?. 
int iArray2 = new int[someSize]; 
Buffer.BlockCopy(bArray, 0, iArray2, 0, iArray2.Length); 

¿Cómo puedo convertir de matriz de bytes a int matriz correctamente?

+2

Un byte almacena valores de 0 a 255. ¿Qué valor esperaría que tenga el byte resultante cuando se convierte desde un valor entero de, por ejemplo, 1000? –

Respuesta

7

Buffer.BlockCopy siempre se trata de bytes, no unidades de matriz.

Por lo tanto, cuando se pasa iArray2.Length en la segunda BlockCopy() llamada, que está copiando que muchos bytes, que es una cuarta parte de la matriz real.

+0

ok gracias, ¿cómo puedo convertir de array de bytes a int array? – HforHisham

+0

@HeshamAbouelsoaod: Pasando la longitud correcta ** en bytes **. – SLaks

+0

vale, funciona, gracias. – HforHisham

Cuestiones relacionadas