이미 비트 배열 길이가 8의 배수 일 때만 작동하는 비트 프로그램이 작성되었습니다. 5 비트의 비트 배열을 바이트로 변환하는 데 도움이 될 수 있습니까?비트 배열을 5 비트 또는 6 비트 만 사용하는 경우 비트 배열을 바이트로 변환하는 방법
두 함수는 비트 배열이 8의 배수 일 때만 작동합니다.
public static byte[] BitArrayToByteArray(BitArray bits)
{
byte[] ret = new byte[bits.Length/8];
bits.CopyTo(ret, 0);
return ret;
}
public static byte[] ToByteArray(this BitArray bits)
{
int numBytes = bits.Count/8;
if (bits.Count % 8 != 0) numBytes++;
byte[] bytes = new byte[numBytes];
int byteIndex = 0, bitIndex = 0;
for (int i = 0; i < bits.Count; i++)
{
if (bits[i])
bytes[byteIndex] |= (byte)(1 << (7 - bitIndex));
bitIndex++;
if (bitIndex == 8)
{
bitIndex = 0;
byteIndex++;
}
}
return bytes;
}
알아 두어야 할 사항 : 배열의 첫 번째 바이트는 비트 0-7을 나타내며 두 번째 바이트는 비트 8-15를 나타내는 식입니다. "bytes [0] & 1"은 비트 0을 나타내고 "bytes [0] & 2"는 비트 1을 나타내며 "bytes [0] & 4"는 비트 2를 나타내며 각 바이트의 최하위 비트는 가장 낮은 인덱스 값을 나타냅니다. 곧. (from : http://msdn.microsoft.com/en-us/library/x1xda43a.aspx) – qqbenq