问题描述
我正在实现霍夫曼编码,霍夫曼算法运行良好,事情是:
当我尝试使用
将 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 (将#修改为@)