问题描述
下面的代码中的考虑words
是此处提到的单词list:https://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Contemporary_poetry
N = len(words)
def encode(message):
out = []
for i in range(len(message) / 8):
word = message[8 * i:8 * i + 8]
x = int(word,16)
w1 = (x % N)
w2 = ((x / N) + w1) % N
w3 = ((x / N / N) + w2) % N
out += [ words[w1],words[w2],words[w3] ]
return out
def decode(wlist):
out = ''
for i in range(len(wlist) / 3):
word1,word2,word3 = wlist[3 * i:3 * i + 3]
w1 = words.index(word1)
w2 = (words.index(word2)) % N
w3 = (words.index(word3)) % N
x = w1 + N * ((w2 - w1) % N) + N * N * ((w3 - w2) % N)
out += '%08x' % x
return out
if __name__ == '__main__':
import sys
if len(sys.argv) == 1:
print 'Error: No Arguments'
elif len(sys.argv) == 2:
print ' '.join(encode(sys.argv[1]))
else:
print decode(sys.argv[1:])
运行此代码时,encode()
可以正常工作,但是我遇到decode()
的问题:
将1234567890
编码为单词
python abovecode.py 1234567890
memory string board
文字解码:memory string board
python abovecode.py memory string board
12345678
为什么最后一个输出中缺少90
?与校验和有关吗?如何解决此问题以及在decode()
中需要更改什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)