C# 从字符串生成数字的方法

C# 从字符串生成数字的方法,c#,C#,我有一些词,比如它,flexform\u mood\u icaro\u bed\u 2。我想写一个方法,从上面的字符串生成一个唯一的代码。例如序列号或产品编号 我使用GetHashCode是出于我的目的。但重要的一点是,代码编号不应使用相同的字符串进行更改。 我在某处看到,GetHashCode将通过更改.net版本而更改 输入包含int和string,正如我在第一行中提到的。实际上,我想根据产品名称制作产品编号 那么有什么方法可以从字符串中生成代码号呢 我有一些产品名称,如:Max ToolK

我有一些词,比如它,flexform\u mood\u icaro\u bed\u 2。我想写一个方法,从上面的字符串生成一个唯一的代码。例如序列号或产品编号

我使用GetHashCode是出于我的目的。但重要的一点是,代码编号不应使用相同的字符串进行更改。 我在某处看到,GetHashCode将通过更改.net版本而更改

输入包含int和string,正如我在第一行中提到的。实际上,我想根据产品名称制作产品编号

那么有什么方法可以从字符串中生成代码号呢

我有一些产品名称,如:Max ToolKit 2、flexform_mood_icaro_bed等,所以我想为它们制作一个序列号。清楚吗

不,不清楚。这些字符串看起来与您在问题中使用的字符串完全不同

你似乎不明白的是,为了做到这一点,你必须选择一个非常具体的算法,它可以破坏那些特定的字符串,谁知道还有什么其他字符串,你仍然没有展示出所有可能的输入都是一个唯一的数,以这样的方式,输出将永远不会冲突。我不知道有哪种算法能做到这一点

当然,像SHA这样的散列算法看起来很像这样,但是你有一个非常非常大的数字作为输出,并且仍然不能保证它对于你想要处理的所有字符串都是唯一的

相反,您应该做的是确定您希望序列号的外观,并生成它们


因此,从一个不错的数字开始,例如100000000,然后迭代您的产品集合,分配当前的数字,并将其递增1。对所有产品重复上述步骤,完成

使用一个不变的散列算法,比如MD5或SHA。MD5/SHA,2,3呢?GetHashCode也不是唯一的。我无法想象如何将字符串投影到适合cpu的唯一数字。字符串可以包含0到很多字符。让我们假设您只有小写字符和数字,这使得至少有36个可能的字符。对于长度为20的字符串,有36^20个可能性,这比2^64要多得多,就像一个无符号长字符串。你到底想达到什么目的?这听起来像是xy问题。给定字符串的唯一唯一字符串是相同的给定字符串。任何哈希算法都有可能发生冲突。MD5生成的字符串可以解释为非常大的十六进制16进制数。我想我无法清楚地解释我的问题!我想写一个程序,它得到的产品名称,如Max工具包2,flexform_mood_icaro_床。之后,程序应为每个产品名称生成产品编号。有些产品以前有序列号,所以我不想使用你提到的好数字System100000000。顺便说一下,我想要一个唯一的数字,因为如果将来有人给出一个产品名,那么程序会从相同的输入产品名生成相同的数字。我知道有很多方法可以识别旧产品。但我只知道如何从字符串生成序列号。你说:如果将来有人给出产品名,那么程序会从相同的输入产品名生成相同的编号,我说:DECLARE@ser INT=SELECT serialnumber from product WHERE name=@name;如果@ser为空,则@ser=generatenewserialnumber@nameENDIF;返回@ser@D.JCode重点是,你可以使用散列算法,但这不能保证唯一性,而且它会给出非常大的数字。结果数越小,两个输入字符串发生冲突的可能性就越大,从而导致相同的输出数。