トップ 一覧 検索 ヘルプ RSS ログイン

tips-ReedSolomon-Codingの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
! WikiPedia
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
! SAMPLE
https://pypi.org/project/reedsolo/

https://code.i-harness.com/ja/q/1cf50ff

! PYTHON
 pip3 install --upgrade reedsolo

test1(encode decode) 
 from reedsolo import RSCodec
 
 #This codec can correct up to 5 errors and 10 erasures simultaneously
 rsc = RSCodec(10)  # 10 ecc symbols
 
 # エンコード
 print('エンコード')
 msg = '田子の浦ゆ うち出でてみれば 真白にそ 富士の高嶺に 雪は降りける'
 print('日本語:', msg)
 e4 = rsc.encode(msg.encode('utf-8'))
 print('エンコード後:', e4)
 
 print()

 
 # デコード
 print('デコード')
 b4 = rsc.decode(e4)[0]
 print('デコード:', b4)
 print('デコード日本語:', b4.decode('utf-8'))

test2 ( error )
test2 ( error test )
 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()