Из битов в двоичное представление числа - C#

Узнай цену своей работы

Формулировка задачи:

У меня есть класс для работы с битовыми массивами. Не получается сделать метод для перевода из бинарной в десятичную системы (необходимо найти значение числа, соответствующего 4 младшим байтам). Конструкторы класса:
private byte[] _core;
        public Bits()
        {
            _core = new byte[1];
        }
 
        public Bits(int bytesCount)
        {
            _core = new byte[bytesCount];
        }

        public Bits(byte[] bytes)
        {
            if (bytes == null) throw new ArgumentNullException("bytes");
            _core = bytes;
        }
Есть индексатор:
 public byte this[int i]
        {
            get { return _core[i]; }
            set { _core[i] = value; }
        }
Как я пытался сделать метод:
static public int Value32(Bits bits)
        {
            int _decimal = 0;
            while (bits.Length / 8 < 5)
            {
                for(int i = 0;i < bits.Length;i++)
                {
                    int multiplier = 1;                    
                    for (int j = bits.Length - 1; j >= 0; j--)
                    {
                        int t = System.Convert.ToInt16(bits[i].ToString());
                        _decimal = _decimal + (t * multiplier);
                        multiplier = multiplier * 2;
                    }                   
                }        
      
            }
            return _decimal;
        }
// программа зависает, цикл плохой

Решение задачи: «Из битов в двоичное представление числа»

textual
Листинг программы
static public int Value32(Bits bits)
        {   
             // не забываем что байты хранятся в памяти в LittleEndian
             // менее значимые цифры идут по младшим адресам, более значимые - по старшим
            short lowVal = BitConverter.ToInt16(new[]{ bits[0], bits[1] },0);
            short highVal = BitConverter.ToInt16(new[] {bits[2], bits[3]},0);
            // складываем 
           return (Int32)(lowVal | (highVal << 16));   
         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы