2012-04-26 3 views
6

Я пытаюсь преобразовать массив байтов в объявление массива int, а затем преобразовать массив байтов в массив int.Ошибка в преобразовании массива байтов в массив int в C#

Для преобразования из массива байтов в целочисленный массив, я использовал этот код:

int[] iArray = new int[someSize]; 
byte[] bArray = new byte[iArray.Length * sizeof(int)]; 
Buffer.BlockCopy(iArray, 0,bArray, 0, bArray.Length); // This code works correctly. 

Но при преобразовании из массива байтов в целочисленный массив, значения в iArray2 массива становится ложным, если значение в iArray массив больше, чем 256 (может быть это переполнение, я не знаю.)

// What is the error in this code?. 
int iArray2 = new int[someSize]; 
Buffer.BlockCopy(bArray, 0, iArray2, 0, iArray2.Length); 

Как я могу конвертировать из массива байтов правильно целочисленный массив?

+2

Байт хранит значения от 0 до 255. Какое значение вы ожидали бы получить полученный байт при преобразовании из целочисленного значения, скажем, 1000? –

ответ

7

Buffer.BlockCopy всегда имеет дело с байт, а не единицы массива.

Поэтому, когда вы проходите iArray2.Length во втором BlockCopy() вызова, вы копируете, что многие байт, что четверть вашего фактического массива.

+0

ok спасибо, как я могу преобразовать из байтового массива в массив int? – HforHisham

+0

@HeshamAbouelsoaod: Пропуская правильную длину ** в байтах **. – SLaks

+0

ОК, это работает, спасибо. – HforHisham

Смежные вопросы