2015-02-15 5 views
1

Я пытаюсь перевернуть биты беззнакового 32-битного целого числа и вывести итоговое целое число. Ниже приведен мой код.Ошибка преобразования байт-массива в байты

int numberOfTries = Convert.ToInt32(Console.ReadLine()); 
     for (int i = 0; i < numberOfTries; i++) 
     { 
      uint input = Convert.ToUInt32(Console.ReadLine()); 
      byte[] bInput = BitConverter.GetBytes(input); 
      if (BitConverter.IsLittleEndian) 
       Array.Reverse(bInput); 
      byte[] result = bInput; 

      BitArray b = new BitArray(new byte[] { result }); 
      b.Not(); 
      uint res = 0; 
      for (int i2 = 0; i2 != 32; i2++) 
      { 
       if (b[i2]) 
       { 
        res |= (uint)(1 << i2); 
       } 
      } 

      Console.WriteLine(res); 
     } 

Однако компилятор жалуется, что «Не удается неявно преобразовать тип„байт []“на„байт“» на линии, где я объявляю BitArray б. Я объявил его байтом [] и не знаю, почему эта ошибка возникает.

ответ

4

result уже byte[], так что вместо этого:

BitArray b = new BitArray(result); 

Та часть, которая на самом деле причиной проблемы заключается в следующем:

new byte[] { result } 

Причиной этого является, потому что инициализатор массив должен возьмите выражения, которые совместимы с типом элемента массива (здесь byte). От 12.6 Array Initializers:

для одного-мерного массива, инициализатор массив должен состоять из последовательности выражений, которые совместимы по присваиванию с типом элемента массива.

+0

Спасибо, это было! – Nathan822

+0

Рад помочь! :) – ama1111

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