Dies sollte es tun
static byte[] ConvertToByte(BitArray bits) {
// Make sure we have enough space allocated even when number of bits is not a multiple of 8
var bytes = new byte[(bits.Length - 1)/8 + 1];
bits.CopyTo(bytes, 0);
return bytes;
}
Sie können es überprüfen, wie ein einfaches Treiberprogramm unter
// test to make sure it works
static void Main(string[] args) {
var bytes = new byte[] { 10, 12, 200, 255, 0 };
var bits = new BitArray(bytes);
var newBytes = ConvertToByte(bits);
if (bytes.SequenceEqual(newBytes))
Console.WriteLine("Successfully converted byte[] to bits and then back to byte[]");
else
Console.WriteLine("Conversion Problem");
}
Ich weiß, dass der OP der Array.CopyTo
Lösung bekannt ist (das ähnlich ist, was Ich habe hier), aber ich sehe nicht, warum es Bit Order Probleme verursacht. FYI, ich verwende .NET 4.5.2, um es zu überprüfen. Und deshalb habe ich den Testfall zur Verfügung gestellt, die Ergebnisse
Sie könnten etw tun. wie https://stackoverflow.com/questions/746171/best-algorithm-for-bit-reversal-from-msb-lsb-to-lsb-msb-in-c – CShark