PDA

View Full Version : [C#] BitConverter to Char


andreapav
21-05-2012, 15:30
Ciao.
Ho questo pezzo di codice che mi alza una eccezione...non so perchè..
byte[] data = new data[4];
data = ReadData(); // sono sempre assegnati tutti e 4 i valori
r["CH_R"] = BitConverter.ToChar(data, 1); // funziona
r["CH_R"] = BitConverter.ToChar(data, 3); // eccezione
Mi dice: "La matrice di destinazione non è sufficientemente grande per copiare tutti gli elementi nell'insieme. Verificare l'indice e la lunghezza della matrice."
Non capisco come mai...

andreapav
21-05-2012, 17:03
Ho risolto con un banale cast: (char)data[3];.
Resta il fatto che non so come mai l'altro modo dia eccezione.

[Kendall]
21-05-2012, 17:33
Perchè il metodo ToChar della classe BitConverter esegue una conversione di due byte a partire dalla posizione specificata. Nel secondo caso tu indichi la posizione iniziale pari alla 3a, ergo l'ultima delle disponibili essendo gli array a base zero. Quindi riesce a leggere solo il primo dei due byte richiesti, il secondo va "Out Of Bound".