我还没有考虑这么多,所以我可能是一个愚蠢的问题。

如何获取唯一的5个ASCII字符串并将其转换为唯一且可重现的32位整数(即每次都必须相同)?

有任何想法吗?

最佳答案

假设它实际上是ASCII(即无序号大于127的字符),则您有5个7位字符或35位信息。无法从35位生成唯一的32位代码。您会丢失三位,因此每个代码还将代表7个其他有效的ASCII字符串。但是,通过谨慎地计算代码,使非常相似的输入字符串具有非常不同的代码,可以使您极不可能看到碰撞。我看到另一个答案建议使用CRC-32。您还可以使用诸如MD5或SHA-1之类的哈希函数,并且仅使用前32位。这可能是最好的,因为哈希函数是专门为此目的而设计的。

如果可以进一步限制输入字符串的值(例如,仅字母数字,无小写字母,无控制字符或类似的东西),则可以消除这些额外的数据,并为每个字符串生成有保证的唯一32位代码。

09-11 18:32
查看更多