将BitArray中的13位转换为有符号整数,然后将BitArray中的4位转换为整数

时间:2013-12-09 16:13:40

标签: c# arrays integer converter bits

有位数组

BitArray bits = new BitArray(17);

我想先取13位并转换为13位有符号整数 比特数组中的余数4比特转换为4比特整数。 我怎么能在C#中做到?

1 个答案:

答案 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中)。