纯python reed solomon编解码器

reedsolo的Python项目详细描述


纯PythonReed Solomon 编码器/解码器,基于 wikiversity, 由“bobmath”写的。

我只合并了一点代码,添加了异常和一个简单的api。 据我所知,该算法最多可以纠正 消息,其中nsym是纠错码(ecc)中的字节数。 代码应该可以在任何合理版本的python(2.4-3.2)上运行, 但我只是在测试2.6-3.2。

注意

我不要求代码的作者,也不对代码的正确性负责 算法的。对我来说,有限域代数太多了:)

我已经发布了这个包,因为我需要一个ecc编解码器为另一个项目,我正在工作, 我在网上找不到任何东西(仍然有效)。

算法本身可以处理多达255字节的消息,包括ecc字节。这个 RSCodec类将把较长的消息分成块,分别进行编码/解码; 从api的角度来看,这不应该有什么不同。

>>> rs = RSCodec(10)
>>> rs.encode([1,2,3,4])
b'\x01\x02\x03\x04,\x9d\x1c+=\xf8h\xfa\x98M'
>>> rs.encode(b'hello world')
b'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')
b'hello world'
>>> rs.decode(b'heXlo worXd\xed%T\xc4\xfdX\x89\xf3\xa8\xaa')     # 3 errors
b'hello world'
>>> rs.decode(b'hXXXo worXd\xed%T\xc4\xfdX\x89\xf3\xa8\xaa')     # 5 errors
b'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(b'hello world')
b'hello world?Ay\xb2\xbc\xdc\x01q\xb9\xe3\xe2='
>>> rs.decode(b'hello worXXXXy\xb2XX\x01q\xb9\xe3\xe2=')         # 6 errors - ok
b'hello world'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java更改WSO2 IS证书会导致登录失败   安卓 Java随机行读取   JavaJComboBox留下了一条线索   用于嵌套对象的java Jasper报告   java动态生成Id值时,如何检索复选框的值   “拼接(a,b,…”的Java等价方法在JavaScript方法中   java在有子面板的jPanel上绘图   java生成时,在包“安卓”中找不到属性“text color”的资源标识符   java如何使用maven插件正确地构建Spring引导远jar?   readUTF中的java EOFEException   在Java中,按星期一到星期天进行排序   java MultiFormatReader无法读取qr,尽管qr是可扫描的   替换java字符串中未知数量的值   java将MySQL连接到Apache nutch   Java从3个不同的枚举中获取随机值   java我需要将多个JRadioButtongGroup和一个jcombobox连接到一个jbutton   java Android sqlite异常。无法实例化活动   如何使用单流创建Map<String,List<Long>>Java8?