есть массив бит
BitArray bits = new BitArray(17);
я хочу взять первые 13 бит и преобразовать в 13-битное целое число со знаком, а остаток в битовом массиве 4 бита преобразовать в 4-битное целое число. Как я могу сделать это на С#?
есть массив бит
BitArray bits = new BitArray(17);
я хочу взять первые 13 бит и преобразовать в 13-битное целое число со знаком, а остаток в битовом массиве 4 бита преобразовать в 4-битное целое число. Как я могу сделать это на С#?
Предполагая, что ваши биты сначала хранятся LSB (например, слева в BitArray), вы можете сделать что-то вроде этого (заимствуя этот пост: Как преобразовать BitArray в одиночное целое число?).
int[] arr = new int[1];
bits.CopyTo(arr, 0); // assume that bits are stored LSB first
int first13Bits = arr[0] >> 4; // shift off last 4 bits to leave top 13
int last4Bits = 0x0000000F & arr[0]; // mask off top 28 bits to leave bottom 4
Обратите внимание, что first13Bits
должно быть подписано, но last4Bits
здесь не будет подписано (поскольку верхние биты маскируются). Если ваши биты сначала хранятся со старшим битом, вам нужно будет перевернуть биты в BitArray перед их преобразованием (поскольку CopyTo, похоже, предполагает, что они сначала хранятся с младшим битом).