Ho un array di byte di lunghezza fissa lungo 1250 byte. Può contenere i seguenti tipi di dati:Array di byte di analisi contenente diversi tipi di dati
Oggetto A che consiste di 5 byte. Il primo byte contiene la lettera "A" ei quattro byte successivi memorizzano un numero intero compreso tra 1 e 100000.
L'oggetto B costituito da 2 byte. Il primo byte contiene la lettera "B" e il byte successivo contiene un numero intero compreso tra 1 e 100.
Oggetto C composto da 50 byte. Tutti i 50 byte sono utilizzati per memorizzare una stringa ASCII con codifica che solo consistere numeri ei seguenti caratteri: - + (e)
Non so quanti di ogni tipo di oggetto sono nell'array di byte, ma so che sono raggruppati insieme (oggetto B, oggetto B, oggetto A, oggetto A, oggetto A, oggetto C, ecc.). La maggior parte delle volte quando analizzo un array di byte, l'array contiene i dati di un tipo (tutti gli oggetti sono Object A, ad esempio), quindi so esattamente quanti byte ogni item è composto e faccio un solo loop attraverso l'array che processa i byte . In questo caso, ho tre diversi tipi di dati che sono tutte diverse lunghezze. Stavo pensando che avrei dovuto fare qualcosa di simile:
int offset = 0;
while (offset <= 1250)
{
string objectHeader = Encoding.ASCII.GetString(byteArray, offset, 1);
if (objectHeader.Equals("A"))
{
// read 4 more bytes and then convert into int value (1 - 100000)
index += 5;
}
else if (objectHeader.Equals("B"))
{
// read 1 more byte and then convert into int value (1 - 100)
index += 2;
}
else
{
// read 49 more bytes and then convert into a string
index += 50;
}
}
C'è un modo migliore per farlo?
Cosa succede se la stringa racchiusa in un'istanza di classe C inizia con un carattere "B"? Come saprai come decomprimerlo? Devi emettere qualche tipo di informazione sul tipo. – Matt
Queste informazioni sono in fase di archiviazione o sono dati preesistenti che stai tentando di caricare? Chiedo perché ci sono modi molto più semplici per archiviare i dati rispetto agli array di byte. – sircodesalot
@Matt Non sono riuscito a dire che la stringa rappresentata dall'oggetto C sarà composta solo da numeri. Se così non fosse, comunque, che tipo di informazioni di tipo suggeriresti? – user685869