so di poter estrarre byte da int simili:Concatenare byte in numero intero o breve conservazione segno
bytes[] IntToBytes(int i)
{
return new byte [] {(byte) ((i >> 8) & 0xff), (byte) (i & 0xff)};
}
quale successivamente mando come parte di una trasmissione seriale. Ma posso fare il contrario, dopo aver ricevuto una sequenza di byte, ricostruire i dati originali, preservando il segno. Attualmente, faccio questo, ma ci si sente un po 'sopra le righe:
int BytesToInt(byte hi, byte lo)
{
return ((hi << 24) | (lo << 16)) >> 16;
}
C'è un altro modo o in un modo migliore? Fa la differenza se so che alla fine ho a che fare solo con i dati a 16 bit con segno?
Questo risponde alla tua domanda? http://stackoverflow.com/questions/2538390/convert-16-bit-signed-int-to-2-bytes –
@josh BitConverter sembra ideale, soggetto a superare il test di endian. – Graham
'(int) BitConverter.ToInt16 (nuovo [] {lo, ciao}, 0);' – Sinatr