da aggiungere alle risposte esistenti qui, c'è un po 'di Gotcha in quel Bitconverter.ToInt32()
getterà un ArgumentException
se la matrice è inferiore a sizseof(int)
(4) byte di dimensione;
L'array di destinazione non è sufficiente per copiare tutti gli elementi nella raccolta. Controlla l'indice e la lunghezza dell'array.
Dato un array inferiore a sizeof(int)
(4) byte di dimensioni, è possibile compensare il riempimento sinistro/destro in questo modo;
destro del pad
Risultati in positivi Int32
numeri
int intByteSize = sizeof(int);
byte[] padded = new byte[intByteSize];
Array.Copy(sourceBytes, 0, padded, 0, sourceBytes.Length);
sourceBytes = padded;
Sx-pad
Risultati in negativo Int32
numeri, assumendo valore diverso da zero di indice byte sourceBytes.Length - 1
.
int intByteSize = sizeof(int);
byte[] padded = new byte[intByteSize];
Array.Copy(sourceBytes, 0, padded, intByteSize - sourceBytes.Length, sourceBytes.Length);
sourceBytes = padded;
Una volta riempita, si può tranquillamente chiamare int myValue = BitConverter.ToInt32(sourceBytes, 0);
.
Segno e grandezza? Complemento di due? – Ani
È in complemento a due –