如果我有一个字符串s ='ABCDEFJHI',我将它切成这样['ABC','DEF','JHI']。 我有函数编码(一些计算),它将切片的字符串转换为数字。
for example 'encode('ABC' ) gives 50 , encode('DEF') gives 33, encode('JHI') gives 10
['ABC','DEF','JHI']给出[50,33,10]。 我想做相反的情况,解码(50)给'ABC' 我知道当我编码子字符串时,我创建了一个库,然后我附加了一个子字符串,其编号如下:('ABC':50)(对所有子字符串做同样的事情),稍后解码我会只需根据数字提取子字符串。 我怎么能在python中做到这一点?
答案 0 :(得分:1)
在您的编码功能中:
def encode(the_string):
#do whatever encoding you're doing
return (the_number,the_string)
无论你在哪里使用它,都可以:
d = dict()
for value in ["ABC","DEF","JHI"]:
encoded,decoded = encode(value)
d[encoded] = decoded
定义一个函数,如:
def decode(lookup_table,value):
return lookup_table[value]
并使用它:
encoded_values = list()
for value in ["ABC","DEF","JHI"]:
encoded,decoded = encode(value)
d[encoded] = decoded
encoded_values.append(encoded)
for value in encoded_values:
print("{} | {}".format(value,decode(d,value)))
[OUT]
50 | ABC
33 | DEF
10 | JHI
那就是说 - 你为什么这样做,你是怎么做到的,为什么你不使用某种真正的加密技术?如果它不是双向加密,你几乎肯定不会将数据存储在任何地方,如果它是双向加密,为什么不用你用来加密的相反算法解密呢?请记住这一点......
答案 1 :(得分:1)
如果它是可逆的,我建议以反向格式存储它(50:'ABC')。而且,想象一下给定代码之前没有编码的情况。
encode_history = {}
def encode(str):
"""some calculations which lead to the code"""
... your calculations ...
encode_history[code] = str
return code
def decode(code):
"""function to convert a code to string"""
if code in encode_history:
return encode_history[code]
else:
return None