Чтобы добавить здесь к существующим ответам, есть небольшая хитрость в том, что Bitconverter.ToInt32()
выбросит ArgumentException
, если размер массива меньше sizseof(int)
(4) байтов;
Массив назначения недостаточно длинный, чтобы скопировать все элементы в коллекции.Проверьте индекс и длину массива.
При наличии массива размером менее sizeof(int)
(4) байта вы можете компенсировать заполнение влево / вправо следующим образом;
Правая клавиша
Результаты в положительном Int32
числах
int intByteSize = sizeof(int);
byte[] padded = new byte[intByteSize];
Array.Copy(sourceBytes, 0, padded, 0, sourceBytes.Length);
sourceBytes = padded;
Левая панель
Результаты в отрицательных Int32
числах, предполагая ненулевое значение в байтовом индексе sourceBytes.Length - 1
.
int intByteSize = sizeof(int);
byte[] padded = new byte[intByteSize];
Array.Copy(sourceBytes, 0, padded, intByteSize - sourceBytes.Length, sourceBytes.Length);
sourceBytes = padded;
После заполнения вы можете безопасно позвонить int myValue = BitConverter.ToInt32(sourceBytes, 0);
.