Pure-Python Reed Solomon encoder/decoder
Project description
A pure-python Reed Solomon encoder/decoder, based on the wonderful tutorial at wikiversity, written by “Bobmath”.
I only consolidated the code a little and added exceptions and a simple API. To my understanding, the algorithm can correct up to nsym/2 of the errors in the message, where nsym is the number of bytes in the error correction code. The code should work on pretty much any reasonable version of python (2.4-3.2), but I’m only testing on 2.6-3.2.
>>> rs = RSCodec(10) >>> rs.encode([1,2,3,4]) '\x01\x02\x03\x04,\x9d\x1c+=\xf8h\xfa\x98M' >>> rs.encode("hello world") 'hello world\xed%T\xc4\xfd\xfd\x89\xf3\xa8\xaa' >>> rs.decode(b'hello world\xed%T\xc4\xfd\xfd\x89\xf3\xa8\xaa') 'hello world' >>> rs.decode(b'hello worXd\xed%T\xc4\xfd\xfd\x89\xf3\xa8\xaa') # 1 error 'hello world' >>> rs.decode(b'heXlo worXd\xed%T\xc4\xfdX\x89\xf3\xa8\xaa') # 3 errors 'hello world' >>> rs.decode(b'hXXlo worXd\xed%T\xc4\xfdX\x89\xf3\xa8\xaa') # 4 errors 'hello world' >>> rs.decode(b'hXXXo worXd\xed%T\xc4\xfdX\x89\xf3\xa8\xaa') # 5 errors 'hello world' >>> rs.decode(b'hXXXo worXd\xed%T\xc4\xfdXX\xf3\xa8\xaa') # 6 errors - fail Traceback (most recent call last): ... ReedSolomonError: Could not locate error >>> rs = RSCodec(12) >>> rs.encode("hello world") 'hello world?Ay\xb2\xbc\xdc\x01q\xb9\xe3\xe2=' >>> rs.decode(b'hello worXXXXy\xb2XX\x01q\xb9\xe3\xe2=') # 6 errors - ok 'hello world'
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
reedsolo-0.1.zip
(8.1 kB
view hashes)
reedsolo-0.1.tar.gz
(4.0 kB
view hashes)