简易压缩模型原型

def splitlis(lis,n):
    for i in range(0, len(lis), n):
        yield lis[i: i + n]

def csilas(src,dst):
    dat=open(src, 'rb').read().hex()
    fp=open(dst,'wb+')
    cat=b'%zfc-1.0'
    fp.write(cat)
    lis=list(splitlis(dat,2048))
    inx=0
    while inx<len(lis):
        if len(lis[inx:])==1:
            fp.write(bytes.fromhex('00'*16+lis[inx]))
        else:
            tmplis=list(splitlis(lis[inx],16))
            tmpbit=''
            tmphex=''
            for it in tmplis:
                if it == '00'*8:
                    tmpbit+='1'
                else:
                    tmpbit+='0'
                    tmphex+=it
            fp.write(bytes.fromhex(str.zfill(hex(int('0b'+tmpbit,2))[2:],32)+tmphex))
            pass
        inx+=1
    fp.close()

def dsilas(src,dst):
    fp=open(src, 'rb')
    fq=open(dst,'wb+')
    fp.seek(8)
    while True:
        hi=fp.read(16)
        hinx=hi.hex()
        if hinx=='':
            break
        if hinx=='00'*16:
            fq.write(fp.read(1024))
        else: 
            binx=str.zfill(str(bin(int('0x'+hinx,16)))[2:],128)
            for it in binx:
                if it=='1':
                    fq.write(b'\x00'*8)
                else:
                    fq.write(fp.read(8))
    fp.close()
    fq.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值