Подобный YouTube GUID

Вы наклоняете виртуальные каталоги использования: (

47
задан Chad Levy 19 October 2011 в 17:56
поделиться

5 ответов

Вы можете использовать Base64:

string base64Guid = Convert.ToBase64String(Guid.NewGuid().ToByteArray());

, который генерирует строку вроде E1HKfn68Pkms5zsZsvKONw == . Поскольку GUID всегда 128 бит, вы можете опустить == , который, как вы знаете, всегда будет присутствовать в конце, и это даст вам строку из 22 символов. Но это не так коротко, как YouTube.

53
ответ дан 26 November 2019 в 19:41
поделиться

9 символов не являются Guid. Учитывая это, вы можете использовать шестнадцатеричное представление int, которое дает вам строку из 8 символов.

Обновление 1: Не знаю, почему вышеупомянутый результат получил отрицательный голос, но для всех, кто задается вопросом:

Вы можете использовать id, возможно, у вас уже есть. Также вы можете использовать .GetHashCode для разных простых типов, и у вас есть другой int. Вы также можете искать разные поля. И если вам это нравится, вы можете даже использовать случайное число - эй, у вас намного больше 2 000 000 000+ возможных значений, если вы будете придерживаться положительных моментов;)

11
ответ дан 26 November 2019 в 19:41
поделиться

Технически это не Guid. Youtube имеет простой генератор случайных строк, который вы, вероятно, сможете создать за несколько минут, используя массив разрешенных символов и генератор случайных чисел.

4
ответ дан 26 November 2019 в 19:41
поделиться

Вероятно, этот идентификатор не является глобально уникальным. GUID должны быть глобально уникальными, поскольку они включают элементы, которые не должны встречаться где-либо еще (MAC-адрес машины, генерирующей идентификатор, время создания идентификатора и т. Д.).

Если вам нужен идентификатор, уникальный в вашем приложения, используйте фонтан числа - возможно, закодируйте значение как шестнадцатеричное число. Каждый раз, когда вам нужен идентификатор, берите его из фонтана чисел.

Если у вас есть несколько серверов, выделяющих идентификаторы, вы можете получить диапазон чисел (несколько десятков или тысяч в зависимости от того, как быстро вы распределяете идентификаторы), и это должен делать свою работу. 8-значное шестнадцатеричное число даст вам 4 миллиарда идентификаторов, но ваш первый идентификатор будет намного короче.

2
ответ дан 26 November 2019 в 19:41
поделиться

Возможно, это не лучшее решение, но вы можете сделать что-то вроде этого:

string shortUrl = System.Web.Security.Membership.GeneratePassword(11, 0);
3
ответ дан 26 November 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: