我怎样才能制作一个“数字”? PHP 中的字符串?
不使用 [0..9] 符号,而使用 [0..9A..Z] 符号
不使用以 10 为基数的系统,而使用以 64 为基数的系统
我想创建一个如下示例所示的函数:
next( 'ABC') return 'ACA' - 这是下一个有 3 个单位的字符串
这就像我们有从 0 到 9 的数字,函数返回下一个数字
数字
next2(135) return 136 - 这是下一个有 3 位数字的 使用基于 10 的数字系统,我想使用数字字母,这意味着基于 36 的系统,并获取下一个所谓的数字
Instead of using the [0..9] symbols use the [0..9A..Z] symbols
Instead of using the base-10 system use the base-64 system
I want to make a function like in this example:
next('ABC') return 'ACA' - this is the next string with 3 units
It is like we have numbers from 0 to 9 and the function return the next number
next2(135) return 136 - this is the next number with 3 digits
We use a base-10 system for numbers an I want to use numbersletters that means a base-36 system, and get the next so called number
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是一个在 3 进制字母数字系统中生成下一个值的函数:
请注意,结果是“CA”,因为“ACA”与在 10 进制中写入“06”相同...我们通常不会这样写前导零,这样你就不会写前导“A”。
因此,我添加了一个填充参数,可让您指定要填充的位数。使用
$pad=3
,您可以从“ABC”得到“ACA”。Here's a function that produces the next value in your base-3 alphabetic number system:
Note that the result is "CA" as "ACA" is the same as writing "06" in base-10... we don't usually write leading zeros so you wouldn't write leading "A"s.
I therefore added a pad parameter that lets you specify what number of digits you want to pad to. With
$pad=3
, you get "ACA" as next from "ABC".像这样的东西
Something like this
我现在能想到的一种方法是将字符转换为base26,然后在数字上加1,然后将其转换回来,我希望你能明白。
Next2 应该做同样的事情,但使用默认的 base10,所以我这只是数字本身的 +1。
期待看到关于此的其他实现。
编辑:没注意到你最后有A。我真傻我才这么做。那将是 base3 而不是 26。
One way I could think of right now is converting the characters to base26 and then adding 1 to the number and converting it back, I hope you get the idea.
Next2 should do a same but with base10 which is default so I that would just be a +1 to the number itself.
Looking forward to see other implementations on this one.
Edit: Didn't notice you had A at the end. silly me of me to do that. that would be base3 then instead of 26.
根据您对 Xavier Barbosa 的回答的评论,如果您想使用从 a 到 z 的所有字母,您可以这样做:
这将打印:
aka
According to your comment to Xavier Barbosa's answer, if you want to use all letters
from a to z
you can do:this will print :
aka
这些手动基数转换函数不会受到内置函数的不准确性的影响。
These manual base conversion functions don't suffer from the inaccuracies of the built-in ones.
要获取 base36 中的下一个数字,请使用:
To get the next number in base36 use: