91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-03
  • 語言: Python
  • 標簽: 算術編碼??

資源簡介

用python實現算術編碼,能夠實現編碼與譯碼。編碼的方法是通過對一篇已知文章求取概率空間后,對待翻譯文章進行算術編碼,并能夠基于已知文章重新進行算術解碼。

資源截圖

代碼片段和文件信息

import?random


def?get_probability(char_li):
????p_space?=?{}
????chars?=?set(char_li)
????len_char_li?=?len(char_li)
????for?char?in?chars:
????????times?=?char_li.count(char)
????????p_space.update({char:?times/len_char_li})
????return?p_space


def?arithmetic_encode(p_space?origin_code):
????code?=?0
????arit?=?1
????keys?=?list(p_space.keys())
????for?char?in?origin_code:
????????index?=?keys.index(char)
????????pd?=?0
????????for?i?in?range(index):
????????????pd?=?pd?+?p_space[keys[i]]
????????code?=?code?+?pd?*?arit
????????arit?=?p_space[char]?*?arit
????????#?print(char?code?arit)
????interval?=?[code?code?+?arit]
????return?interval


def?arithmetic_decode(p_space?interval?l):
????decoding_code?=?[]
????arit_range?=?{}
????c?=?0
????for?char?in?p_space.keys():
????????a?=?p_space[char]
????????arit_range.update({char:?(c?c+a)})
????????c?+=?a
????code?=?random.uniform(interval[0]?interval[1])
????ori_range?=?arit_range.copy()
????while?len(decoding_code)?????????for?char?rang?in?ori_range.items():
????????????if?rang[0]?????????????????decoding_code.append(char)
????????????????c?=?rang[0]
????????????????for?ch?ran?in?arit_range.items():
????????????????????a?=?ran[1]?-?ran[0]
????????????????????ori_range.update({ch:?(c
???????????????????????????????????????????c?+?a?*?(rang[1]?-?rang[0]))})
????????????????????c?=?c?+?a?*?(rang[1]?-?rang[0])
????????????????break
????return?decoding_code


def?main():
????info_source?=?[0?1?1?2?2?2?3?3?3?4?4?4?4?5?5?5?5?5?6?6?6?6?6?6]
????origin_txt?=?[6?5?0?1?1]
????#?origin_txt?=?“dead!“
????p_space?=?get_probability(info_source)
????#?p_space?=?{“a“:?0.2?“b“:?0.1?“c“:?0.1?“d“:?0.3?“e“:?0.2?“!“:?0.1}
????interval?=?arithmetic_encode(p_space?origin_txt)

????with?open(“encoding.txt“?“w“?encoding=“gbk“)?as?f:
????????f.write(“信源為:?“?+?“?“.join([str(i)?for?i?in?info_source])?+?“\n“)
????????f.write(“源碼為:?“?+?““.join([str(i)?for?i?in?origin_txt])?+?“\n“)
????????f.write(“算術編碼區間為:?“?+?str(interval)?+?“\n“)
????decoding?=?arithmetic_decode(p_space?interval?len(origin_txt))
????with?open(“decoding.txt“?“w“?encoding=“gbk“)?as?f:
????????f.write(“信源為:?“?+?“?“.join([str(i)?for?i?in?info_source])?+?“\n“)
????????f.write(“算術編碼區間為:?“?+?str(interval)?+?“\n“)
????????f.write(“譯文為:?“?+?“?“.join([str(i)?for?i?in?decoding])?+?“\n“)

????print(“對數字符號編碼結果為:?“?interval)
????print(“對數字符號譯碼結果為:?“?decoding)

????#?此處的origin_txt?的內容可以更改,但是其字符必須出于Origin.txt?一文
????origin_txt?=?“hello?World“
????with?open(“Origin.txt“?“r“?encoding=“gbk“)?as?text:
????????#?print(text.readline())
????????ori?=?text.readline()
????????#?print(len(ori))
????????p_space?=?get_probability(ori)
????????interval?=?arithmetic_encode(p_space?origin_txt)
????with?open(“ArithC.txt“?“w“)?as?text:
????????#?print(len(txt)?txt)
????????text.write(“基于來自文章‘Origin.txt‘的概率空間對字符?%s?的編碼為:?“?%?str(o

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-11-22?08:58??Arithmetic_Code\
?????目錄???????????0??2019-11-22?08:58??Arithmetic_Code\.idea\
?????文件?????????444??2019-10-30?10:14??Arithmetic_Code\.idea\Arithmetic_Code.iml
?????文件?????????491??2019-11-22?08:34??Arithmetic_Code\.idea\encodings.xml
?????文件?????????297??2019-10-30?10:14??Arithmetic_Code\.idea\misc.xml
?????文件?????????289??2019-10-30?10:09??Arithmetic_Code\.idea\modules.xml
?????文件???????10044??2019-11-22?08:44??Arithmetic_Code\.idea\workspace.xml
?????文件?????????105??2019-11-22?08:36??Arithmetic_Code\ArithC.txt
?????文件????????3641??2019-11-22?08:35??Arithmetic_Code\arithmetic.py
?????文件?????????137??2019-11-22?08:36??Arithmetic_Code\decoding.txt
?????文件?????????133??2019-11-22?08:36??Arithmetic_Code\encoding.txt
?????文件?????????763??2019-10-25?10:18??Arithmetic_Code\Origin.txt
?????文件?????????110??2019-11-22?08:36??Arithmetic_Code\Translation.txt

評論

共有 條評論

相關資源