2012-04-26 12 views
6

Sto provando a convertire un array di byte in un annuncio di array int, quindi convertire l'array di byte in un array int.Errore nella conversione dell'array di byte nell'array int in C#

Per la conversione da byte a int matrice ho usato questo codice:

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. 

Ma quando si converte dalla matrice di byte in int matrice, i valori nella matrice iArray2 diventa falso quando il valore nel iArray matrice è più grande di 256 (forse è troppo pieno, non lo so.)

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

Come posso convertire da array di byte a int correttamente array?

+2

Un byte memorizza valori compresi tra 0 e 255. Quale valore ci si aspetterebbe dal byte risultante quando viene convertito da un valore intero di, ad esempio, 1000? –

risposta

7

Buffer.BlockCopy occupa sempre byte, non unità di array.

Pertanto, quando si passa iArray2.Length nel secondo BlockCopy() chiamata, si sta copiando che molti byte, che è un quarto della matrice reale.

+0

ok grazie, come posso convertire da array di byte a array int? – HforHisham

+0

@HeshamAbouelsoaod: passando la lunghezza corretta ** in byte **. – SLaks

+0

ok funziona, grazie. – HforHisham