Para añadir a las respuestas existentes aquí, hay un poco de Gotcha en que Bitconverter.ToInt32()
lanzará un ArgumentException
si la matriz es menor que sizseof(int)
(4) bytes de tamaño;
La matriz de destino no es lo suficientemente larga para copiar todos los elementos de la colección. Verifique el índice y la longitud de la matriz.
Dada una matriz de menos de sizeof(int)
(4) bytes de tamaño, puede compensar el relleno a la izquierda/derecha como tal;
derecho del cojín
Resultados en Int32
números positivos
int intByteSize = sizeof(int);
byte[] padded = new byte[intByteSize];
Array.Copy(sourceBytes, 0, padded, 0, sourceBytes.Length);
sourceBytes = padded;
Izquierda-pad
Resultados en Int32
números negativos, asumiendo valor distinto de cero en el índice 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 vez rellenada, se puede llamar de forma segura int myValue = BitConverter.ToInt32(sourceBytes, 0);
.
¿Firma y Magnitud? Complemento de dos? – Ani
Está en complemento de dos –