有没有一种简单的方法可以将唯一的字符串转换成JavaScript中的唯一数字?

用户名

这几乎是Math SE的一个交叉文章-尽管我的问题的解释是相同的,但在Math.SE上,我一直在寻求数学解决方案。

我的问题是,我在Math.SE上获得的解决方案是“转换为基数35”,这可能是一个很好的答案,但是我对数学确实感到非常恐惧,并且不了解如何在我的代码中应用该解决方案。我尝试查找有关转换为不同基准的课程,这对我来说很混乱。即使是关于将数字转换为JavaScript中的基数的问题,也没有弄清楚我将如何精确地将其用于需要执行的操作。

有没有一种简单的方法可以在JavaScript中处理此问题?这是完整的问题:

我有一个不寻常的编程问题,而数学方面的问题让我感到困惑。

我生成了一个由七个字符组成的唯一字符串,每个字符串都是从这些可能性中随机选择的:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789例如A6HJ92B,我需要将其转换为唯一的数字值。转换后,此随机字符串的任何两个版本都不能是名称编号。

我只能生成一个数字,而不是在原始id中包含字母,但是,这当然意味着我必须增加字符串的长度,并且我的应用程序的用户可能希望键入此字符串,因为它可以识别他的字符串。应用程序中的“会话”,因此我想使其简短。

所以我的想法是建立一个这样的表:

A : 1,
B : 2,
C : 3,
D : 4,
E : 5,
F : 6,
G : 7,
H : 8,

... you get the idea ...

5 : 31,
6 : 32,
7 : 33,
8 : 34,
9 : 35

然后我将所有数字加起来...

A6HJ92B

A : 1
6 : 32
H : 8
J : 10
9 : 35
2 : 28
B : 2

1+32+8+10+35+28+2 = 116

...但是我意识到这是一个错误的想法,因为许多可能的字符串会“碰撞”或等于相同的数字。我需要每个唯一的字符串等于一个唯一的数字。

因此,即使我乘以每个字符的值(1*32*8*10*35*28*2 = 5,017,600),我也在想那里也可能发生冲突。

有没有一种方法可以消除碰撞?如果无法消除冲突,我可以使用哪些方法将其最小化?

i

基本上,您需要进行一次内射转换f : S → N,其中S是长度为7的带有字符的JS字符串的集合A-Z1-9,并且N是所有JS数字的集合。

一种可能的方法是,像您尝试的那样,考虑其中的字符串S数字位置编码。

但是,为了具有内射性(避免冲突),应将每个字符的值乘以基础乘以位置的幂。

例如,给定下表的字符值

0 ⟶  0
1 ⟶  1
⋮      ⋮
9 ⟶  9
A ⟶ 10
B ⟶ 11
⋮      ⋮
Z ⟶ 35

A6HJ92B将成为10×36⁶ + 6×36⁵ + 17×36⁴ + 19×36³ + 9×36² + 2×36 + 11,也就是22160072099

您可以使用parseInt轻松进行转换toString

parseInt('A6HJ92B', 36); // 22160072099
(22160072099).toString(36).toUpperCase(); // "A6HJ92B"

如果要使用任意值表,则必须手动编码转换。

请注意,在JS中,数字是64位的双精度浮点数。这意味着精度是有限的,并且您不能存储任意大的整数。超出此最大值,它将无法正常工作

Number.MAX_SAFE_INTEGER; // 9007199254740991
Number.MAX_SAFE_INTEGER.toString(36).toUpperCase(); // "2GOSA7PA2GV"

但是由于您的字符串只有7个字符,因此就足够了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有一种简单的方法可以将小数格式化为sql中的字符串

在Spring MVC中,有没有一种简单的方法可以将空表单输入转换为空字符串?

在Racket中,有没有一种简单的方法可以将字符串转换为变量名(标识符)?

有没有一种快速的方法可以将字符串中的罗马数字转换为R中的阿拉伯语?

有没有一种简单的方法可以将jquery代码转换为javascript?

有没有一种简单的方法可以在 JavaScript 中用空字符串替换 NaN?

有没有一种简单的方法可以从 JSON 字符串中获取 Manatee.JsonObject?

有没有一种简单的方法可以使用vbscript将字符串转换为数学表达式?

有没有一种方法可以将“字符串”转换为“ KType”?

有没有一种方法可以将graphql查询字符串转换为GraphQLResolveInfo对象?

有没有一种方法可以将数字值一起添加到字符串中而不会循环?

有没有一种方法可以将JSON中的对象视为字符串?

有没有一种简单的方法可以通过短代码使用 wordpress 将数字转换为单词?

是否有一种简单的方法来将数据帧中的唯一数据点配对?

有没有一种方法可以将字符串转换为D中的二进制

有没有一种简单的方法可以在没有“setAttribute”的情况下将变量字符串添加到元素属性?

有没有一种简单的方法可以通过字符串访问数组元素?

有没有一种简单的方法可以以字符串形式使用嵌套对象 > 数组键?

有没有一种简单的方法来检查字符串中的大写字符?

在Vue.js中,有没有一种方法可以将组件模板保留在JavaScript字符串之外?

有没有一种方法可以生成唯一的整数永久链接?

有没有一种方法可以按字符串中的数字对字符串列表进行排序?

有没有一种方法可以删除字符串中除字符,数字和“-”以外的所有内容

有没有一种简单的方法来删除字符串中的多个空格?

有没有一种简单的方法可以将字节[]转换为Fsharp中的ReadOnlySpan <byte>?

有没有一种简单的方法可以将 name:value 子项转换为 postgresql 中的列?

有没有一种简单的方法可以将数据库行转换为Golang中的JSON

将唯一数字映射到列表列中每个唯一字符串的最有效的计算方法

有没有一种方法可以将以字符串表示的数字转换为等效的二进制数?