#!/usr/bin/python
# coding:utf-8
def 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 str
def 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 + cur
def 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 b
str1=Gamma(1)
str2 = Gamma(511)
str3 = Gamma(131)
print (str1)
print (str2)
dep = decompression(str1 + str2 + str1 + str1 + str3 + str1)
print (dep)
版权声明:本文为dengjiaxing0321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。