微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BitArray 到 byte[] 错误转换

如何解决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 举报,一经查实,本站将立刻删除。