Из битов в двоичное представление числа - 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)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д