如何用Python3修复base62编码的代码?
How to fix the code for base62 encoding with Python3?
我正在为 base62 编码创建一个 python 脚本。但是,出于某种原因,我的代码没有产生正确的答案。正确答案是 LpuPe81bc2w,但我得到的是 LpuPe81bc0w。如果您可以查看我的代码,看看我是否可以做任何不同的事情。请告诉我。我不能使用 pybase62.
我真的很想知道为什么我的代码不起作用,因为我想了解基础知识。最好
没有 PyBASE62,我是初学者。
base_62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
BASE = len(base_62)
def to_base_62(number):
rete=''
while number != 0:
rete = (base_62[number%BASE])+rete
number = int(number/BASE)
return rete
print (to_base_62(18327995462734721974))
您 运行 不符合浮点精度。我在您的代码中插入了一个简单的跟踪语句:
def to_base_62(number):
rete=''
while number != 0:
rete = base_62[number%BASE]+rete
print(len(rete), number/BASE)
number = int(number/BASE)
return rete
输出:
1 2.956128300441084e+17
2 4767948871679168.0
3 76902401156115.61
4 1240361308969.5967
5 20005827564.01613
6 322674638.12903225
7 5204429.645161291
8 83942.40322580645
9 1353.9032258064517
10 21.822580645161292
11 0.3387096774193548
LpuPe81bc0w
浮点除法没有保留足够的数字来区分这么大的数字所需的数字。相反,使用整数除法:
while number != 0:
rete = base_62[number%BASE]+rete
print(len(rete), number // BASE)
number = number // BASE
输出:
1 295612830044108418
2 4767948871679168
3 76902401156115
4 1240361308969
5 20005827564
6 322674638
7 5204429
8 83942
9 1353
10 21
11 0
LpuPe81bc2w
我正在为 base62 编码创建一个 python 脚本。但是,出于某种原因,我的代码没有产生正确的答案。正确答案是 LpuPe81bc2w,但我得到的是 LpuPe81bc0w。如果您可以查看我的代码,看看我是否可以做任何不同的事情。请告诉我。我不能使用 pybase62.
我真的很想知道为什么我的代码不起作用,因为我想了解基础知识。最好
没有 PyBASE62,我是初学者。
base_62 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
BASE = len(base_62)
def to_base_62(number):
rete=''
while number != 0:
rete = (base_62[number%BASE])+rete
number = int(number/BASE)
return rete
print (to_base_62(18327995462734721974))
您 运行 不符合浮点精度。我在您的代码中插入了一个简单的跟踪语句:
def to_base_62(number):
rete=''
while number != 0:
rete = base_62[number%BASE]+rete
print(len(rete), number/BASE)
number = int(number/BASE)
return rete
输出:
1 2.956128300441084e+17
2 4767948871679168.0
3 76902401156115.61
4 1240361308969.5967
5 20005827564.01613
6 322674638.12903225
7 5204429.645161291
8 83942.40322580645
9 1353.9032258064517
10 21.822580645161292
11 0.3387096774193548
LpuPe81bc0w
浮点除法没有保留足够的数字来区分这么大的数字所需的数字。相反,使用整数除法:
while number != 0:
rete = base_62[number%BASE]+rete
print(len(rete), number // BASE)
number = number // BASE
输出:
1 295612830044108418
2 4767948871679168
3 76902401156115
4 1240361308969
5 20005827564
6 322674638
7 5204429
8 83942
9 1353
10 21
11 0
LpuPe81bc2w