Gamma压缩与解压

来源:互联网 发布:linux中oracle启动监听 编辑:程序博客网 时间:2024/05/17 03:03
 #!/usr/bin/python# coding:utf-8def to_bin(num):    a = int(num)    mid = []    str = ''    while True:        if a == 0:            break        a, rem = divmod(a, 2)        mid.append(rem)    mid.reverse()    for i in mid:        str = str + '%d' % i    return strdef Gamma(num):    cur = ''  # 偏移    num_bin_coding = to_bin(num)  # 二进制编码    cod_length = len(num_bin_coding)  # 编码长度    length = '1' * (cod_length - 1) + '0'  # 长度    for i in range(1, cod_length):        cur = cur + '%s' % num_bin_coding[i]    return length + curdef decompression(str):    i = 0    temp = 0    num = 0    b = []        while(i < len(str)):        if(str[i] != '1'):            a = [1]            j=0            for j in range(1, i - temp + 1):                a.append(int(str[i + j]))            a.reverse()            for k in range(0, len(a)):                num = num + a[k] * (2**k)            b.append(num)            i = i + j            temp = i + 1            num = 0        i=i+1    return bstr1=Gamma(1)str2 = Gamma(511)str3 = Gamma(131)print (str1)print (str2)dep = decompression(str1 + str2 + str1 + str1 + str3 + str1)print (dep)

0 0
原创粉丝点击