久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2211|回復: 0
收起左側

哈夫曼py程序

[復制鏈接]
ID:143174 發表于 2018-6-24 10:59 | 顯示全部樓層 |閱讀模式
程序可參考

py源程序如下:
  1. import hufcode
  2. import statistic
  3. import six
  4. def decompress():
  5.     print("please input youer filename")
  6.     inputfilename=input()
  7.     f = open(inputfilename,'rb')
  8.     filedata1 = f.read()
  9.     filedata=bytearray(filedata1)
  10.     filesize = f.tell()
  11.     #print(filedata)


  12.     a1 = filedata[0]
  13.     a2 = filedata[1]
  14.     a3 = filedata[2]
  15.     a4 = filedata[3]
  16.     j = 0
  17.     j = j|a1
  18.     j = j<<8
  19.     j = j|a2
  20.     j = j<<8
  21.     j = j|a3
  22.     j = j<<8
  23.     j = j|a4

  24.     leaf_node_size = j

  25.    
  26.    
  27.     char_freq = {}
  28.     for i in range(leaf_node_size):
  29.         c = filedata[4+i*5+0]

  30.         
  31.         a1 = filedata[4+i*5+1]
  32.         a2 = filedata[4+i*5+2]
  33.         a3 = filedata[4+i*5+3]
  34.         a4 = filedata[4+i*5+4]
  35.         j=0
  36.         j = j|a1
  37.         j = j<<8
  38.         j = j|a2
  39.         j = j<<8
  40.         j = j|a3
  41.         j = j<<8
  42.         j = j|a4
  43.         #print (c, j)
  44.         char_freq[c] = j
  45.         j=0

  46.     list1=[]
  47.     list_all=[]
  48.     for x in char_freq.keys():
  49.         list1.append((x,char_freq[x]))

  50.     list1.sort()
  51.     list_all=[item[0]for item in list1]
  52.     #print(list1)
  53.     #print(list_all)

  54.     nodes = hufcode.createNodes([item[1] for item in list1])   #出現次數
  55.     root = hufcode.createHuffmanTree(nodes)                #葉子節點
  56.     codes = hufcode.huffmanEncoding(nodes,root)            #編碼


  57.     #print(codes)
  58.    

  59.     code1=''
  60.     for x in range(leaf_node_size*5+4,filesize):
  61.         c = filedata[x]
  62.         for i in range(8):
  63.             if c&128:
  64.                 code1 = code1 +'1'
  65.             else:
  66.                 code1 = code1 + '0'
  67.             c = c<<1
  68.     #print(code1)

  69.     newcode=dict(zip(codes,list_all))
  70.     print(newcode)
  71.    
  72.     #print(newcode.get('1000'))
  73.     #print(bytes((int(newcode.get('1000')),)).decode("ascii"))
  74.     i=0
  75.     res=''
  76.     while i < len(code1)-24:
  77.         j = i+1
  78.         while j < len(code1): #獲取某一字符的code
  79.             if code1[i:j] in newcode.keys():
  80.                 break
  81.             j += 1
  82.         #print(code1[i:j])
  83.         res =res + bytes((int(newcode.get(str(code1[i:j]))),)).decode('ascii')
  84.         #print(res)
  85.         i = j
  86.    
  87.     sub_code = code1[-16:-8]
  88.     last_length = 0
  89.     for i in range(8):
  90.         last_length = last_length<<1
  91.         if sub_code[i] == '1':
  92.             last_length = last_length|1
  93.    
  94.     code1=code1[-24:-16]+code1[-8:-8+last_length]

  95.     i=0
  96.     while i < len(code1):
  97.         j = i+1
  98.         while j < len(code1): #獲取某一字符的code
  99.             if code1[i:j] in newcode.keys():
  100.                 break
  101.             j += 1
  102.         #print(code1[i:j])
  103.         res =res + bytes((int(newcode.get(str(code1[i:j]))),)).decode('ascii')
  104.         #print(res)
  105.         i = j

  106.     print(res)
  107.    
  108.     print("\ndo you want save it? 1/yes,2/no")
  109.     ans=input()
  110.     ans=int(ans)
  111.     if ans==1:
  112.         print('please input the filename')
  113.         outfilename=input()
  114.         out = open(outfilename,"w")
  115.         out.write(res)
  116.         out.close
  117.     else:
  118.         pass
復制代碼

所有資料51hei提供下載:
霍夫曼.rar (14.57 KB, 下載次數: 7)


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 久久亚洲欧美日韩精品专区 | 亚洲欧美日韩在线 | 久久综合一区二区三区 | 国产成人综合一区二区三区 | 91免费视频| 久久久久久久久久久福利观看 | 天堂在线中文字幕 | 中文字幕在线观看第一页 | 中文字幕av一区二区三区 | 在线观看你懂的网站 | 第四色播日韩第一页 | 色婷婷综合久久久中字幕精品久久 | 国产精品无码久久久久 | 97久久精品午夜一区二区 | 久久久www成人免费无遮挡大片 | 国产日韩精品在线 | 亚洲成年在线 | 色妞av| 国产精品久久久久久久午夜片 | 一起操网站 | 欧美一级视频免费看 | 国产高清精品在线 | 亚洲3p | 黑人巨大精品欧美一区二区一视频 | 婷婷久久五月 | 亚洲一区二区视频 | 污免费网站 | 亚洲精品在线免费播放 | 国产一区在线免费观看视频 | 人人天天操 | 国产一区二区在线观看视频 | 一区免费观看 | 精品免费观看 | 国产一区二区欧美 | 欧美一级在线观看 | 亚洲一区二区电影网 | 午夜国产羞羞视频免费网站 | 欧美精品片 | 欧美大片久久久 | 精品三区|