Python 使用zfec 纠删码示例

源码地址:https://github.com/tahoe-lafs/zfec

安装zfec

python -m pip install zfec

示例

例如我们有k个数据块,我们希望生成m个数据块(m>=k),从而可以使用m个数据块中的任意k个恢复出原来的数据块。
这里,我们取k=2,m=3,原始数据是二进制字符串b'abcde' 。需要注意的是,为了保证原始数据能被k整除,该工具会对数据添加padding,padding为b'\x00'

编码时,会得到一个数组,每个元素是一个二进制字符串(数据块)。
解码时,需要输入k个数据块以及对应的下标,以及添加的padding的长度。


from zfec.easyfec import Encoder, Decoder
import random

if __name__ == "__main__":
    k = 2
    m = 3
    # 1 correction blocks for every 2 blocks
    enc = Encoder(k, m)
    dec = Decoder(k, m)

    # Dummy payload, byte data
    data = b'abcde'

    # calculate padding length
    if len(data) % k != 0:
        padlen = (len(data)//k) - len(data)%k
    else: padlen = 0

    # encode 
    byte_array = enc.encode(data)
    print(byte_array) # [b'abc', b'de\x00', b'kl\xa5']


    # decode, need pass in the blocks + blocknums and padlen
    blocks = (byte_array[0],byte_array[2])
    blocknums = (0,2)
    decoded = dec.decode(blocks, sharenums=blocknums,padlen=padlen)

    print(decoded) # b'abcde'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值