00:00
同学们,我们把整个这一系列的操作,把它封装到一个方法里面去,便于我们的操作好,现在呢,我们把干什么呢,使用。一个方法。方法,将前面的方法包括起来,对不对,或者叫封装起来吧,封装起来,封装起来便于便于我们的调用。我们的调用。没问题,那这个方法我们取个名字。取个名字比较到位一点的名字。Private static,我返回一个数组。就是你。真正要去发送的,呃,发送的这一个哈man,编码过后的这个数组,然后呢,这个名字咱们就叫哈man。Zip,好吧,Halfman zip,然后呢,你把一个原始的数组字节数组给我,我来处理BY,嗯,现在呢,我先把这里的几个系数说一下,这个BY是原始的。
01:13
原就要写原始的字符串对应的。字节数组。说的再直接一点,就是我们这里对应的content by词。然后呢,经过处理以后返回的这个BY就返回的是什么呢?返回的是经过注意听。就是。经过什么呢?A、经过。就是经过赫夫赫那个赫夫曼编码,赫夫曼编码处理后的字节数组。你可以理解成就是我们压缩后的数组。压缩后的数组就这意思,好,同学们,现在呢,我们就开始来。
02:02
玩一把。首先第一步,按照我们刚才的流程,第一步是不是你先得到得到了一个。把这传进来的这个字节数组转成了一个no,呃,历史的放起来好,现在呢,我们先把第一句话给他,这个分布过程我也写到这儿好吧,分布。分布过程是这这我把它注销了,因为待会呢我们都不要了,对不对,写了这么久呢,我们其实是为了让我们最后做一把封装。其实为了让我们做最后做一把分装好第一步,我把它拿过来是这样子的。同学们,第一步。是吧,拿到了,当然这个时候这个拜师呢,咱们就叫这个就可以了。第一步就做完了,第二一步该干什么呀?第二一步是不是就是创建二叉树啊,创建赫夫曼树,这写了啊,测试一把,创建赫夫曼树,这个叫赫夫曼树。
03:07
赫夫曼树。创建赫夫曼数应该这样写了,第二步创建赫夫曼数,就是根据你传建的这个no啊,根据应该是这样,是根据这个note。Not创建赫夫曼数,那创建赫夫曼数是什么方法呢?实际上就是这个方法。是不是同学们?这个就搞定。因为你漏拿到了,我们就创建赫曼数,赫曼数拿到以后,下一步我们该干什么了,同学们。这个便便历我就不去测了,因为写写这个完全是为了去测试我们创建客户慢数是否正确。下一步是不是来生成对应的赫夫曼编码?是这样子吧,同学们下一步生成对应的赫夫曼编码,这个是根据什么呢?根据赫夫曼数来创建。
04:03
啊,根据赫夫曼数来创建对应的赫夫曼编码,那这个呢,也很简单,刚才我们已经写过了,是他吧。是不是这个东西好,这个。拿过来。那拿过来这个航班编码我们也就拿到了,是不是接着继续往下写。下一步该干什么?因为你赫夫曼编码已经拿到了,现在我们就可以这一步一下了,就是根据赫夫曼编码来对我们原始的字节速度进行压缩。发挥这个是不是好,非常的简单,下一步。下一步是这样子的了,做一个注释。当然,这个bit我还要用。是这样子的吧。也就是说根据。根据什么呢生成的。根据生辰的赫夫曼编码干什么?
05:02
编码,然后呢,压缩压缩得到得到压缩后的什么呀,赫夫曼。霍夫曼。编码。字节数组。是不是这样子吧,字节数组,这个就是我们真正压缩后的那同学们,嗯,当我们拿到这个的时候,其实这个事情就要已然搞定了。然后直接将我们。这一个压缩后的赫夫曼编码字节,字节数组返回,待会就写完了。大家看,就这么几句话。那当然我们写这句话里面这些方法我们都是,可是实实在在一步一步写出来的,你看起来好像这就掉了,第一个方法,第二个方法,第三个方法,第四个方法,但是每一步我们都是一步一步推导出来的,是这样子吧,同学们好,此时此刻我们再去玩就不需要这么麻烦了,就不需要这么麻烦,怎么办呢?一句搞定。
06:02
我们就拿到拜。赫夫曼。编码对应的bit等于什么呢?就等于刚才我们写的half曼。Zip,把这个content bit传进去代码就行了。就一句话了,以前是这么多句话,那现在呢,我们直接调赫夫曼这方法就可以拿掉,那这样子我们仍然把它输出看一下,看看结果压缩后的。结果是输出一把,看看跟前面。我们得到的这一个结果是否一致?点to使菌,然后呢,把。这个字节数组输出,我们运行一把。好,同学们可以看到,现在呢,就拿到了。而且应该是正确的,对不对,你现在把这个长度打出来,很明显就是17长度为我也给大家打出来。
07:04
写出来。长度。长度是多少呢?等于来隔一下。加上我们这一个half man code bit点即可。这时应该返回的是多少呢?17是不是17同学们?同学看,原先是40,现在是17。好,我们算一下它的压缩率,其实刚才已经算过了,是不是算过了,再体验一下应该是40。减掉一个时期,这个是我节省的。节省的字节除以它原先的40个字节等于多少呢?57.5A怎么变大了?哦原哦,我我想起来了,刚才我做的时候是不是把这个40当成43算了对吧,好像刚才上一讲讲的是按43,这是不对的,再算一下啊,应该没问题,40嘛,你原先是最早是40,那就是40减去一个17,这是节省的,再除以40,不是43啊,上上次视频应该我写的是43,现在实际上是40等于57.5。
08:23
压缩率好,同学们,那关于这一个就是我们讲的赫夫曼的一个数据压缩,其实到此就全部讲完了。就全部讲完了,大家看看你是否听懂了。但是你。有一个新的问题又摆在我们面前,你现在已经可以把这个数据发送了,就是你发送的其实是这个字节数组,因为我们在网络上传输呢,按照字节传输是没有问题的。这是无损压缩,但问题又在于,当你拿到这个结果的时候,也就是说当当你拿到这个。
09:01
字节数组时,你怎么又把它?解压成对应的ii like like like Java do you like Java。又是一个新的问题,也就是说,下面我们还要继续讲解一个新的问题,就是如何。哎,如何将将什么呢。这个数据进行解压。你有你有压缩就会有解压,解压呢,我们也也生成解码。也叫解码。对不对,我们刚才那个是压缩,压缩就是编码,我们刚才这个整个这个过程呢,我们称之为。压缩过程也叫也叫什么呢?也叫编码的过程。下面我们要解决的是解码。问题好,那关于解码呢?我们放在下一个视频为各位同学进行讲解。
我来说两句