从14个字符串生成5个字符的唯一ID

时间:2014-08-09 08:02:36

标签: java

我有14个字符的唯一输入字符串,如BR004395285678,我想将其映射到少数5个字符的唯一ids。有没有办法做到这一点,除了使用自动递增的ID?

2 个答案:

答案 0 :(得分:1)

1)一般情况下,你不能100%保证5个char字符串是唯一的 那是因为14个字符串可以超过所有可能的5个字符串 假设5-char和14-char字符串的字母表是相同的。

2)在实践中,如果14个字符串中的某些字符无意义 (即在整个14个字符串中总是相同的)然后你 可以使用简单的映射,例如

BR00 43952 85678 - > 85678

为了得到一组5-char字符串。

对于这个简单映射的想法,请使用14-char字符串的那一部分 这是变化最大的,在14个字符串集中变化最大(通常为
这将是由最后5位数组成的部分。

3)最好的解决方案是为5个字符串使用不同的字母。

E.g。将前导0添加到BR00 43952 85678.你得到 0BR 004 395 285 678.
如上所示,将其分为3个字符组 现在通过双射将每个三元组编码为来自另一个的字符/符号 (更大)字母表。你得到的将保证5个字符和独特。

答案 1 :(得分:0)

您有26 ^ 2 * 10 ^ 12个独特的可能性,您需要至少6.8 * 10 ^ 14个符号来表示它需要50位信息。即7个字节。如果你假设每个字符都是16位(避免使用无效字符),你可以使用4个字符,但这是你想到的吗?

正如peter.petrov建议的那样,如果你将字符串分解为AA DDD DDD DDD DDD并且你可以使用16位字符对每个字符编码1000个符号,那么你将使用5个字符而不是4个字符。

相关问题