BitArray 到 byte[] 错误转换

问题描述

我正在实现霍夫曼编码,霍夫曼算法运行良好,事情是:

当我尝试使用

将 BitArray 转换为 byte[] 时
BitArray encoded = huffmanTree.Encode(input); // The encoding works well
byte[] bytes = new byte[encoded.Length / 8 + (encoded.Length % 8 == 0 ? 0 : 1 )];
encoded.copyTo(bytes,0);

它转换错误。我将字节数组写入文件,然后读取,再次转换为BitArray,看是否相同:

//displaying BitArray
        Console.Write("Encoded: ");
        foreach (bool bit in encoded)
        {
            Console.Write((bit ? 1 : 0) + "");
        }
        Console.WriteLine();

//Writing to a file
        File.WriteallBytes(@"C:\Users\vvvoh\source\repos\Laba1Alg\Laba1Alg\Encoded",bytes);
     
// Reading from file
        byte[] bytes1 = File.ReadAllBytes(@"C:\Users\vvvoh\source\repos\Laba1Alg\Laba1Alg\Encoded");
// To BitArray
        var bits = new BitArray(bytes1);
//displaying BitArray after reading from file
        Console.Write("Encoded again: ");
        foreach (bool bit in bits)
        {
            Console.Write((bit ? 1 : 0) + "");
        }
        Console.WriteLine();

这是输出,它显示代码、转换之前和之后的 BitArray。

Origin: ABC
Code:
A - 10
B - 11
C - 0
Encoded: 10110
Encoded again: 10110000
Final: ABCCCC

请让我知道我的错误在哪里,帮助我理解我错在哪里。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)