有位数组
BitArray bits = new BitArray(17);
我想先取13位并转换为13位有符号整数 比特数组中的余数4比特转换为4比特整数。 我怎么能在C#中做到?
答案 0 :(得分:1)
假设您的位首先存储在LSB中(例如,在BitArray中最左侧),您可以执行以下操作(借用此帖子:How can I convert BitArray to single int?)。
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
进行签名(因为顶部位被屏蔽掉)。 如果你的位先存储在MSB中,你需要在转换它们之前反转BitArray中的位(因为CopyTo似乎假设它们先存储在LSB中)。