这个问题挺奇葩的。
当时项目里用到 Reed Solomon ,用法参考我写的:python-reedsolomon实际应用
我的环境是:
- reedsolo 1.5.4
- Python 3.7.5
- PyCharm 2019.2.6(Community Edition)
pycharm和命令行里的python环境是我在anaconda里搞的同一个虚拟环境。可对于decode()函数,二者的返回值却不一样。
from reedsolo import RSCodec
def decode(necc, data):
rsd = RSCodec(necc)
data = rsd.decode(data)
print(type(data))
print(data)
necc = 8
data = [64, 131, 19, 35, 54, 134, 86, 198, 198, 240, 203, 150, 203, 150, 203, 128, 241, 181, 167, 50, 218, 244, 35, 100]
decode(necc, data)
'''pycharm-Run模式输出:
<class 'bytearray'>
bytearray(b'@\x83\x13#6\x86V\xc6\xc6\xf0\xcb\x96\xcb\x96\xcb\x96')
'''
'''cmd/Pycharm-Terminal输出:
<class 'tuple'>
(bytearray(b'@\x83\x13#6\x86V\xc6\xc6\xf0\xcb\x96\xcb\x96\xcb\x96'), bytearray(b'@\x83\x13#6\x86V\xc6\xc6\xf0\xcb\x96\xcb\x96\xcb\x96\xf1\xb5\xa72\xda\xf4#d'), bytearray(b'\x0f'))
'''
实际用于解码的值,其实是第一个,所以如果返回tuple,取第一个就好了。不过还是有一点点奇怪的。
升级pycharm到最新版还是一样。
我后来把reedsolo.py拷贝到当前目录、改名引用后,二者输出又是一致的了。
查看源代码,decode函数确实要返回tuple才对啊:
目前只是记录一下,希望之后我能找到原因T_T