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