C# 哈夫曼密码。减压阶段。如何从列表中的文件.bin中提取字节数组(或逐字节提取)<;int>;这将是一个8位数组
我正在尝试实现对.txt文件的哈夫曼压缩和解压缩。压缩效果很好:简而言之,我构建了二叉树,其中符号是叶子,用0和1的C# 哈夫曼密码。减压阶段。如何从列表中的文件.bin中提取字节数组(或逐字节提取)<;int>;这将是一个8位数组,c#,.net,huffman-code,binaryreader,binarywriter,C#,.net,Huffman Code,Binaryreader,Binarywriter,我正在尝试实现对.txt文件的哈夫曼压缩和解压缩。压缩效果很好:简而言之,我构建了二叉树,其中符号是叶子,用0和1的List对每个符号进行编码,为整个文本形成一个0和1的长字符串(通过Join方法),并将每个8位字(包含8个二进制数字,仅为Char)写入文件。哇,文件变小了 现在进入下一个阶段-解压-我需要使用BinaryReader从文件中逐字节读取,然后再次将其转换为List或String,但不转换为int或char,它们分别占用4或1个字节 这是我的假设。也许有更好的主意?我想知道如何处理
List
对每个符号进行编码,为整个文本形成一个0和1的长字符串(通过Join
方法),并将每个8位字(包含8个二进制数字,仅为Char
)写入文件。哇,文件变小了
现在进入下一个阶段-解压-我需要使用BinaryReader
从文件中逐字节读取,然后再次将其转换为List
或String
,但不转换为int
或char
,它们分别占用4或1个字节
这是我的假设。也许有更好的主意?我想知道如何处理这个问题。您已经创建了一个二叉树,其中叶对应于所有不同的字符,对吗?这就是解压/解码二进制文件所需的全部信息 以下是一个很好的解释:
希望这有帮助 Warcaith,谢谢你的回答,但我只是想知道如何简单地从二进制文件中获取我的0和1字符串。我发现我可以使用
Convert.ToString(byte,2)
逐字节读取,并获得它的二进制表示形式。但现在我意识到当字节以0开始时可能会出现问题。下面是针对java[link]()讨论的相同问题哦,对了,我想我误解了你,对不起!如果您找到了解决方案,请务必回答,以便其他程序员可以利用您的帖子!:)是的,但是在我克服了Convert.ToString(byte,2)
方法的错误之后。但这绝对是个好主意!您是否尝试使用解决方案解码文件?您是取回了旧文本还是在开始时遇到了0
问题?