-1

可能重复:
生成唯一 ID 的公式?

基本上我需要生成一个唯一的数字,但我不希望它太长,比如 UUID。那个大小的一半(如果不是更小)。

谁能想到任何方法来做到这一点?

基本上我将有一个可能被多人使用的应用程序,该应用程序生成文件并将它们上传到 Web 服务器。这些名称必须是唯一的。

顺便说一句,我不想​​使用数据库表来跟踪这些东西。

4

3 回答 3

3

生成一个 UUID,并且只取字符串的前半部分。

如果您担心生成重复的 ID,您的选择是使它们成为非随机和自动递增的,或者检查是否存在新生成的 ID:

do {
  newId = generateNewId();
} while (idExists(newId));
于 2012-08-13T20:55:27.177 回答
0

如果您需要它独特且简短的 UUID 并使用 url 缩短器。

于 2012-08-13T21:14:25.770 回答
0

勾起了我的好奇心:

// create a 32-bit uid:
    var i = BitConverter.ToUInt32(Guid.NewGuid().ToByteArray(), (new Random()).Next(0, 12));
// create a 64-bit uid
    var l = BitConverter.ToUInt64(Guid.NewGuid().ToByteArray(), (new Random()).Next(0, 8));

当然,以下内容可能同样适用,因为当您截断它时您会丢失 guid 的大部分功能,并且不妨求助于随机数:

l = BitConverter.ToUInt64(BitConverter.GetBytes((new Random()).NextDouble()), 0);

...如果您正在寻找 64 位整数。

于 2012-08-13T21:19:38.773 回答