gpt4 book ai didi

string - 如何从位于该字符串中字符排列数量范围内的数字生成唯一字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:31 25 4
gpt4 key购买 nike

假设我可以有一个长度为 8 字节的字符串,每个字节都是来自以下范围之一的字符:0-9、a-z、A-Z,总共 62 种变体。该字符串的排列总数为 62 的 8 次方 = 218340105584896。我需要编写一个函数来接受范围内的数字
0-218340105584896 并返回唯一的字符串。在 unique 下,我的意思是函数不能为这个范围内的两个不同数字返回相同的字符串。任何代码示例和提示将不胜感激。

最佳答案

您可以将数字视为 base 62 数字,并相应地填写字符串“digits”(base-62 位)。

让我们看看如何使用不同基数的十进制数 1234 来实现这一点。请注意,下面的除法始终是整数除法(小数部分被切掉)。

以 10 为基数(十进制):0-9

1234 / 10^3 = 1, 1234 mod 10^3 = 234
234 / 10^2 = 2, 234 mod 10^2 = 34
34 / 10^1 = 3, 34 mod 10^1 = 4
4 / 10^0 = 4, 4 mod 10^0 = 0
Thus we represent this number in base-10 as "1234"

Base 16(十六进制):0-9,a-f(其中 a=10,b=11,...)

1234 / 16^2 = 4, 1234 mod 16^2 = 210
210 / 16^1 = d, 210 mod 16^1 = 2
2 / 16^0 = 2, 2 mod 16^0 = 0
Thus we represent this number in base-16 as "4d2"

这可以扩展到任何基数,包括 base-62:0-9,a-z,A-Z

1234 / 62^1 = j, 1234 mod 62^1 = 56
56 / 62^0 = U, 56 mod 62^0 = 0
Thus we represent this number in base-62 as "jU"

我没有费心做前导 0,但你可以看到 1234/62^2 = 0,和 1234 mod 62^2 = 1234,所以在 base-62 中你可以有“000000jU”。


请注意,您只能对 [0, 218340105584896) 范围内的数字执行此操作,因此无法表示 218340105584896。

关于string - 如何从位于该字符串中字符排列数量范围内的数字生成唯一字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48492864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com