Значение параметра Boost :: UUID c - PullRequest
0 голосов
/ 31 марта 2020

В Java UUID Class есть способ установить верхний и нижний длинные значения для создания значения c для UUID.

UUID test(-1, -1);

сгенерирует UUID: ffffffff-ffff-ffff-ffff-ffffffffffff

Существует ли подобный метод для создания метода с BOOST UUID в C ++, а затем для создания строковой версии и преобразования его обратно в UUID?

1 Ответ

0 голосов
/ 01 апреля 2020

Передача целых чисел в конструктор будет неоднозначной, поскольку вы не знаете, какой UUID они сгенерируют, поскольку целые числа могут иметь разные байтовые представления на разных платформах. Конечно, все единицы (как в -1) и все нули делают это более или менее очевидным, но как насчет других целочисленных значений?

Решением является либо создание UUID из строки, либо из байтов.

boost::uuids::uuid u1{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }};

boost::uuids::uuid u2 = boost::uuids::string_generator()("ffffffff-ffff-ffff-ffff-ffffffffffff");

std::istringstream strm("ffffffff-ffff-ffff-ffff-ffffffffffff");
boost::uuids::uuid u3;
strm >> u3;
...