Мне нужно преобразовать несколько десятичных чисел (или строку, или 1 и 0) в двоичную комбинацию. В .NET я вижу много библиотек, работающих с Byte. Байт - это манипуляция 8 битами. В моем случае я должен работать с набором из 3 бит, который мне нужно объединить вместе.
Например:
для фильтра или раздела У меня есть бит 3 позиции.
Что я должен использовать, чтобы помочь мне в этом виде обращения? В данный момент я пытаюсь понять BitArray, но я не понимаю, как создать бит определенного размера, а затем легко их заполнить.
Вот что я уже сделал
BitArray headerBits = new BitArray(new bool[] { false, false, true, true, false, false, false, false }); // 8
BitArray filterBits = new BitArray(new bool[] { false, true, true }); // 11
BitArray PartitionBits = new BitArray(new bool[] { true, false, true }); // 14
BitArray CompanyPrefixBits = new BitArray(new bool[] { false, false }); // 16
Давайте попробуем с этими 16 первыми битами. Я хочу получить результат
3074
РЕДАКТИРОВАТЬ ------
BitArray headerBits = new BitArray(new bool[] { false, false, true, true, false, false, false, false }); // 8
BitArray filterBits = new BitArray(new bool[] { false, true, true }); // 11
BitArray PartitionBits = new BitArray(new bool[] { true, false, true }); // 14
BitArray CompanyPrefixBits = new BitArray(new bool[] { false, false }); // 16
BitArray newBitArray = new BitArray(headerBits.Cast<bool>()
.Concat(filterBits.Cast<bool>())
.Concat(PartitionBits.Cast<bool>())
.Concat(CompanyPrefixBits.Cast<bool>())
.ToArray());
var byteArray = newBitArray.ToByteArray();
Console.WriteLine($"{BitConverter.ToString(byteArray, 0)}");
// Result is 0C-2E
// I expect 30-74
Как это возможно?