因此,我正在尝试编写(在Python3中没有字符串)我发现的这个很酷的项目
将36位数字n的6个字符的字符串表示形式作为基数64返回,其顺序与64位数字的顺序相反,其中64位数字的顺序为:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+
比如说,
encode(0) → '000000'
encode(9876543210) → 'gR1iC9'
encode(68719476735) → '++++++'
到目前为止,我得到的是:
def encode(n):
SYM = {'0': 0,
'1': 1,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9,
'A': 10,
'B': 11,
'C': 12,
'D': 13,
'E': 14,
'F': 15,
'G': 16,
'H': 17,
'I': 18,
'J': 19,
'K': 20,
'L': 21,
'M': 22,
'N': 23,
'O': 24,
'P': 25,
'Q': 26,
'R': 27,
'S': 28,
'T': 29,
'U': 30,
'V': 31,
'W': 32,
'X': 33,
'Y': 34,
'Z': 35,
'a': 36,
'b': 37,
'c': 38,
'd': 39,
'e': 40,
'f': 41,
'g': 42,
'h': 43,
'i': 44,
'j': 45,
'k': 46,
'l': 47,
'm': 48,
'n': 49,
'o': 50,
'p': 51,
'q': 52,
'r': 53,
's': 54,
't': 55,
'u': 56,
'v': 57,
'w': 58,
'x': 59,
'y': 60,
'z': 61,
'-': 62,
'+': 63,}
但现在我不知道下一步该怎么办。我不想使用字符串和连接等,我想使用模和标准数论+for
/while
/else
方法来实现这一点
我的想法是定义
r1 = n % 63
r2 = r1 % 63
r3 = r2 % 63
r4 = r3 % 63
r5 = r4 % 63
r6 = r5 % 63
但我不知道接下来该怎么办
例如,如何将n转换为基数64?最后,为了在找到新的表示形式后反转数字,我想我只需修改每个10的幂,以隔离每个数字,然后以相反的顺序连接它们。但是,我不知道如何用Python编程,因为我对该语言相对较新。非常感谢您的帮助,谢谢
这里有一些代码可以满足您的需要。
get_digit
函数使用一组if... elif
测试来转换0<;=d<;64转换为相应的字符号,然后使用标准chr
函数将该数字转换为实际字符。函数执行实际的余数计算,调用get_digit
进行字符转换,并将结果保存到out
列表中。我们用'0'
字符附加该列表,使其长度为6输出
因为我们使用的是一个2次方的基数,它是
就是使用位运算
这稍微快一点,但我想这并没有多大区别,前面的代码更可读。当然,理解按位版本产生正确结果的原因可能会很有用
相关问题 更多 >
编程相关推荐