我试图将一个7位数的整数转换为6个字符的字母数字值(全部大写a)。我不想翻译整数值,有没有其他方法可以做到这一点?编码和解码与输出值返回到函数,并再次输入-| 输入|输出|| --|--|| 7200123 |ABC123|| ABC123| 7200123 || 1234567 |12X7S3|| 12X7S3| 1234567 |理想情况下,我应该能够传递任何整数,并获得编码的6个字符的字母数字值,并传递6个字符的字母数字值以获得整数
sf6xfgos1#
如果你没有“特定的规则”,只有一组值,使用字典。“default”字典保存你的加密(正向)。反转该字典将给你给予解码,即,带回密钥,提供一个值。这就要求你的转换表只包含唯一的元组--也就是说,没有值可以在不同的键上出现两次。但我认为这是一个隐含的假设。如果你对同一个输出有两个不同的键,那将是不可逆的,你将无法返回一个唯一的值。
from typing import Dict translation_dict: Dict[int, str] = {7200123: 'ABC123', 1234567: '12X7S3'} def encode(number: int) -> str: return translation_dict.get(number, None) def decode(alphanumeric: str) -> int: inverse_dict: Dict[str, int] = {v: k for k, v in translation_dict.items()} return inverse_dict.get(alphanumeric, None)
字符串
z8dt9xmd2#
所以这就是我如何能够执行它,虽然没有显示6个字符值,但权衡是可以接受的。
import base36 print(base36.dumps(7200345)) print(base36.loads("4abtl"))
的数据
2条答案
按热度按时间sf6xfgos1#
如果你没有“特定的规则”,只有一组值,使用字典。
“default”字典保存你的加密(正向)。反转该字典将给你给予解码,即,带回密钥,提供一个值。
这就要求你的转换表只包含唯一的元组--也就是说,没有值可以在不同的键上出现两次。但我认为这是一个隐含的假设。如果你对同一个输出有两个不同的键,那将是不可逆的,你将无法返回一个唯一的值。
字符串
z8dt9xmd2#
所以这就是我如何能够执行它,虽然没有显示6个字符值,但权衡是可以接受的。
字符串
的数据