如何生成唯一的字符串?

时间:2012-01-20 19:21:50

标签: string unique

我有一个设备,我想为每个设备生成以下格式的字符串:XXXXXXXX。每个X都是BGR。一个例子是GRBRRBRB。这给了我大约7000个工作密钥就足够了,因为我怀疑我会有更多的设备。

我以为我可以事先生成它们,并将它们转储到文件或其他内容中,然后从中获取下一个密钥,但我想知道是否有更好的方法可以做到这一点。

我知道有更好的方法可以做到这一点,如果我不需要保证唯一性,但我肯定需要这样,所以我不确定最好的方法是什么。

3 个答案:

答案 0 :(得分:2)

将其视为数字的三元表示,其中R = 0,B = 1,G = 2。因此,当您编写第n个ID时,如果n%3 == 0,则第一个数字为R,如果n%3 == 1则为B,否则为G。第二个数字是相同的,除了你看(n / 3)%3;那么对于第三位数看(n / 3 ^ 2)%3;等

答案 1 :(得分:0)

如果您的设备有任何唯一的顺序 ID,我会为该“唯一字符串”检索实施确定性算法。

我的意思是

GetDeviceRgbString(deviceid) { // deterministic algorithm returning appropriate value using device id to choose it }

否则考虑将其存储在某处(取决于您的环境,您提供的数据很少,但可能是文件,数据库......)并将其标记为已使用,最好保留有关已分配设备的数据,您可能需要它一次。

答案 2 :(得分:0)

我将假设您希望它们能够识别某些类型的网络(互联网)活动。在这种情况下,我会有一个Web服务,可以通过分发ID来确保每个设备是唯一的。每个设备上的软件都会看到它是否有ID(本地存储),如果没有,请从Web服务请求。