다음

2013-12-09 1 views
0

이 비트 배열다음

처음 13 비트를 가지고 13bits로 변환 할
BitArray bits = new BitArray(17); 

정수 부호 비트의 배열과 나머지가 정수로 BitArray 4 비트 변환 부호있는 정수 BitArray 13 비트로 변환 4 비트는 4 비트 정수로 변환됩니다. C#으로 어떻게 할 수 있습니까?

답변

1

비트가 LSB 우선으로 저장되었다고 가정하면 (예 : BitArray에서 가장 왼쪽으로), 다음과 같이 할 수 있습니다 (이 게시물을 차용 : How can I convert BitArray to single int?). (상위 비트가 오프 마스크 때문에) first13Bits 여기에 서명해야하지만, last4Bits 서명되지 않습니다

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 

참고. 비트가 MSB의 첫 번째에 저장되어있는 경우 변환하기 전에 BitArray의 비트를 리버스해야합니다 (CopyTo가 LSB가 먼저 저장되었다고 가정하는 것처럼 보임).