정수 값을 바이트 배열 Byte[]
으로 serialize하여 입력 값의 최상위 비트도 대상의 최상위 비트가되도록해야합니다 정렬. 또한 저장 위치에 대한 비트 단위 (바이트 단위가 아닌) 오프셋을 허용해야합니다.MSB 우선 비트 순서를 사용하는 경우 BitArray에서 비트 순서 유지
가 여기에 내가 정수를 쓰고있어 간단한 예제 (모두 MSByte - 첫째, MSbit - 일차) 바이트 경계에 정렬 : 여기
Byte[] buffer = new Byte[99];
Encode(buffer, 0, 0x1234); // Encode the value 0x1234 inside buffer at bit-offset 0.
Assert.AreEqual(buffer[0], 0x12); // The integer value is stored most-significant-byte first
Assert.AreEqual(buffer[1], 0x34);
는 비슷한는하지만 에 의해 상쇄 1 비트 : 나는 현재 BitArray
인스턴스를 사용하고
Array.Initialize(buffer); // Reset the buffer's bytes to 0.
Encode(buffer, 1, 0x0102); // Encode 0x0102 at bit-offset 1
// In binary 0x0102 is 00000001 00000010, but the final buffer will be this: 00000000 10000001 00000000
Assert.AreEqual(buffer[0], 0x00); // The first byte will be zero
Assert.AreEqual(buffer[1], 0x81); // 10000001 == 0x81
Assert.AreEqual(buffer[2], 0x00);
그러나 BitArray
는, 즉 바이트 내의 비트 순서를 반전시킵니다. bitArray[0]
은 버퍼의 첫 번째 바이트의 최하위 비트 인 반면, 내 버퍼의 첫 번째 바이트의 최상위 비트가되어야합니다.