トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

PY-ReedSolomon

  リード・ソロモン符号

インストール

pip3 install --upgrade reedsolo

テストコード

#!/bin/env python3
# rs.py
from reedsolo import RSCodec

#This codec can correct up to 5 errors and 10 erasures simultaneously
rsc = RSCodec(10)  # 10 ecc symbols
maxerrors, maxerasures = rsc.maxerrata(verbose=True)
print('maxerrors      :', maxerrors)
print('maxerasures    :', maxerasures)
print()

msg = b'May the force be with you.'
enc = rsc.encode(msg)
print('元メッセージ   :', msg)
print('エンコード     :', enc)
print()

print('デコード(1)')
print('rsc.check() : ', rsc.check(enc))
decoded_msg, decoded_msgecc, errata_pos = rsc.decode(enc)
print('enc            :', enc)
print('errata_pos     :', errata_pos)
print('decoded_msgecc :', decoded_msgecc)
print('decoded_msg    :', decoded_msg)
print()

print('デコード(2)  エラー個数4')
enc[2] = 0x58 # X
enc[10] = 0x59 # Y
enc[18] = 0x5A # Z
enc[20] = 0x58 # X
print('rsc.check() : ', rsc.check(enc))
decoded_msg, decoded_msgecc, errata_pos = rsc.decode(enc)
print('enc            :', enc)
print('errata_pos     :', errata_pos)
print('decoded_msgecc :', decoded_msgecc)
print('decoded_msg    :', decoded_msg)
print()

print('デコード(3) エラー個数5')
enc[11] = 0x58 # X
#enc[12] = 0x59 # Y
#enc[13] = 0x5A # Z
#enc[15] = 0x58 # X
#enc[17] = 0x59 # Y
print('rsc.check() : ', rsc.check(enc))
decoded_msg, decoded_msgecc, errata_pos = rsc.decode(enc)
print('enc            :', enc)
print('errata_pos     :', errata_pos)
print('decoded_msgecc :', decoded_msgecc)
print('decoded_msg    :', decoded_msg)
print()