!! リード・ソロモン符号 *https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%89%E3%83%BB%E3%82%BD%E3%83%AD%E3%83%A2%E3%83%B3%E7%AC%A6%E5%8F%B7 ! インストール 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()