Я застреваю в странном затруднительном положении. Я должен генерировать UUID в своей программе Linux (который я распределяю использование RPMs). Я не хочу добавлять, другая зависимость к моему приложению, требуя, чтобы пользователь установил libuuid (кажется, что libuuid не включен в большинство дистрибутивов Linux, как CentOS).
Нет ли стандартный системный вызов Linux, который генерирует UUID (как, говорят, в Windows там CoCreateGuid)? Что делает команду uuidgen использование?
Спасибо за все ваши комментарии!
Я просмотрел каждый из них, и вот что лучше всего соответствовало моим требованиям:
Мне нужны были только простые UUID-ы, основанные на времени, которые генерировались из случайных чисел один раз для каждого пользователя, который устанавливал приложение. UUID версии 4, как указано в RFC 4122, был именно таким. Я просмотрел предложенный алгоритм и придумал довольно простое решение, которое бы работало как в Linux, так и в Windows (может быть, слишком упрощенное, но оно и вправду удовлетворяет эту потребность!):
srand(time(NULL));
sprintf(strUuid, "%x%x-%x-%x-%x-%x%x%x",
rand(), rand(), // Generates a 64-bit Hex number
rand(), // Generates a 32-bit Hex number
((rand() & 0x0fff) | 0x4000), // Generates a 32-bit Hex number of the form 4xxx (4 indicates the UUID version)
rand() % 0x3fff + 0x8000, // Generates a 32-bit Hex number in the range [0x8000, 0xbfff]
rand(), rand(), rand()); // Generates a 96-bit Hex number
Есть ли причина, по которой ты не можешь просто статически связать себя с либуидом?
Посмотрите на форму с левой стороны по этому URL-адресу http://www.blueprintcss.org/tests/parts/forms.html
Если вы размещаете метку на 1 строке, а поле ввода - на другой строке, то вам не нужно беспокоиться о выравнивании меток. Стиль это немного больше вы будете иметь чистый и хороший web2.0, как форма
Ура
-121--3006973-Самое простое решение, которое я могу придумать:
ending = str[-n..-1] || str
(EDIT: оператор или
имеет более низкий приоритет, чем назначение, поэтому обязательно используйте | |
вместо него.)
В POSIX не существует системного вызова для генерации UUID, но я полагаю, что можно найти код BSD/MIT для генерации UUID. ooid выпускается под лицензией на программное обеспечение Boost, которая согласно википедии, является разрешительной лицензией в стиле BSD/MIT. Затем его можно просто вставить в приложение, не добавляя зависимостей.