2012-06-20 29 views
12

Come convertire un array di byte in un array int? Ho una matrice di byte che contiene 144 articoli e le modalità che ho provato sono abbastanza inefficienti a causa della mia inesperienza. Mi dispiace se è già stata data una risposta, ma non sono riuscito a trovare una buona risposta da nessuna parte.Come convertire un array di byte in un array int?

+1

Quali sono i modi che avete provato? – Marlon

+0

Solo per citare - byte è 8 bit, int è 32 bit e si sta convertendo un byte in int. Tutti gli interi convertiti vanno da 0 a 255. – Bakudan

risposta

22

Semplice:

//Where yourBytes is an initialized byte array. 
int[] bytesAsInts = yourBytes.Select(x => (int)x).ToArray(); 

Assicurati di includere System.Linq con una dichiarazione secondo:

using System.Linq; 

E se LINQ non fa per te, è possibile utilizzare questo invece:

int[] bytesAsInts = Array.ConvertAll(yourBytes, c => (int)c); 
+0

Ho ricevuto un errore: 'byte []' non contiene una definizione per 'Seleziona' e nessun metodo di estensione 'Seleziona' accetta un primo argomento di tipo 'byte []' potrebbe essere trovato (ti manca una direttiva using o un riferimento all'assembly?) – user1166981

+0

@ user1166981: assicurati di fare riferimento a 'System.Linq' nel tuo progetto. (A proposito, quale versione del framework .NET stai prendendo di mira?) – Ryan

+0

ok questo ha rimosso l'errore grazie – user1166981

4

Ho saputo che questo è un vecchio post, ma se cercavi in ​​primo luogo di ottenere un array di interi pack DE in un array di byte (e potrebbe essere considerato il tuo array di byte di 144 elementi), questo è un modo per farlo:

var size = bytes.Count()/sizeof (int); 
var ints = new int[size]; 
for (var index = 0; index < size; index++) 
{ 
    ints[index] = BitConverter.ToInt32(bytes, index * sizeof (int)); 
} 

Nota: prendersi cura del endianness se necessario. (E nella maggior parte dei casi lo faccia)

+0

Bello, cercavo questo. La gente sembra dimenticare che (int) byteVar non è la stessa cosa di convertire un bytearray in un int (ad esempio 4 byte per un intero) – Sliver2009

+1

C'è una soluzione migliore: https://stackoverflow.com/a/5896716/238419 Che la domanda riguarda 'int []' a 'byte []' ma questa soluzione dovrebbe funzionare a prescindere –

0

ora è semplice come segue,

int[] result = Array.ConvertAll(bytesArray, Convert.ToInt32); 
Problemi correlati