2013-02-26 15 views
7

Ho creato un'applicazione che memorizza gli array di byte nel mio SQLiteDatabase. Questa stessa applicazione seleziona anche gli array di byte dal database ogni "x" secondi.Riempimento di un byte [] con più byte [] s

Il flusso di dati della mia richiesta è la seguente:

Applicazione -> SQLiteDatabase -> Application

La mia domanda è:

Come faccio a compilare un byte array con tutti gli array di byte in arrivo da SQLiteDatabase?

Ad esempio:

Byte[] Data; 

deve essere riempito con la seguente matrice di byte:

Byte[] IncomingData; 

IncomingData viene continuamente riempito dal SQLiteDatabase.

I dati devono essere riempiti con IncomingData costantemente.

Qualcuno può darmi una mano?

+0

Che cosa significa "riempimento"? Vuoi conciderli? – usr

+0

Sì, ad esempio in stringa sarebbe come: string str1 = "12"; string str2 = "13"; se dovessi aggiungerli, il risultato sarebbe: 1213, ho bisogno della stessa cosa con il mio array di byte – Max

+1

Perché non usare solo un elenco di byte così? – James

risposta

4

Basta usare Concat:

data1.Concat(IncomingData); 

Avrai bisogno di aggiungere il riferimento System.Linq spazio dei nomi.

+0

Ho aggiunto System.Linq, quando digito "data1". il senso intelli mi aiuterà con Concat, ma richiede "<>" cosa deve essere inserito in queste parentesi graffe? – Max

+0

+1 Stavo pensando ai flussi di memoria e tutto – Liam

+1

@mobstaa solo per riferimento, il <> è il tipo generico specificato – Liam

4

Ci sono alcuni approcci che puoi seguire.

  1. Utilizzare un
  2. Utilizzo di LINQ List<byte> e List.AddRangeEnumerable.Concat
  3. Usa Array.Copy e fare tutto manualmente

Dei tre, se possibile, andare con il List come sarà (probabilmente) di ridurre la quantità di copia di array richiesta. Questo è ciò per cui sono fatti gli elenchi, usano un array dietro le quinte con un certo capacity, inizia alle 4 e raddoppia quando raggiunge la capacità. La capacità può anche essere impostata su un numero elevato con la proprietà list.Capacity o con il costruttore che accetta uno int in modo molto simile a un array. Puoi sempre riportare la lista usando List.ToArray.

Enumerable.Concat probabilmente creerà solo una matrice della dimensione minima, ovvero un nuovo array deve essere creato ogni volta che si ottengono altri byte s.

+0

Perché il sovraccarico di conversione in elenchi? Come dici tu, usano comunque gli array sullo sfondo. – mattytommo

+0

In realtà è 'ToArray' non' AsArray'. – juharr

+0

.Concat creerà sempre un nuovo array tra i due, se questo si verifica ogni pochi secondi è molto copiato. Un elenco può essere inizializzato con una capacità e viene copiato solo quando tale capacità viene raggiunta. Sì, ToArray. –

Problemi correlati