diff --git a/components/net/cpp/include/ftl/uuid.hpp b/components/net/cpp/include/ftl/uuid.hpp index 836e8f4958b138f7cce938f6e3a16ea00b29cf56..99f0626e68d04abadf173cd2ea268e1212c1d87c 100644 --- a/components/net/cpp/include/ftl/uuid.hpp +++ b/components/net/cpp/include/ftl/uuid.hpp @@ -61,11 +61,37 @@ namespace ftl { */ std::string to_string() const { static const char *digits = "0123456789abcdef"; - std::string rc(sizeof(uuid_)*2,'0'); + std::string rc(sizeof(uuid_)*2+4,'0'); - for (size_t i=0 ; i<16; ++i) { - rc[i*2] = digits[uuid_[i] & 0x0f]; - rc[i*2+1] = digits[(uuid_[i] >> 4) & 0x0f]; + size_t j=0; + for (size_t i=0 ; i<4; ++i) { + rc[j+1] = digits[uuid_[i] & 0x0f]; + rc[j] = digits[(uuid_[i] >> 4) & 0x0f]; + j+=2; + } + rc[j++] = '-'; + for (size_t i=4 ; i<6; ++i) { + rc[j+1] = digits[uuid_[i] & 0x0f]; + rc[j] = digits[(uuid_[i] >> 4) & 0x0f]; + j+=2; + } + rc[j++] = '-'; + for (size_t i=6 ; i<8; ++i) { + rc[j+1] = digits[uuid_[i] & 0x0f]; + rc[j] = digits[(uuid_[i] >> 4) & 0x0f]; + j+=2; + } + rc[j++] = '-'; + for (size_t i=8 ; i<10; ++i) { + rc[j+1] = digits[uuid_[i] & 0x0f]; + rc[j] = digits[(uuid_[i] >> 4) & 0x0f]; + j+=2; + } + rc[j++] = '-'; + for (size_t i=10 ; i<16; ++i) { + rc[j+1] = digits[uuid_[i] & 0x0f]; + rc[j] = digits[(uuid_[i] >> 4) & 0x0f]; + j+=2; } return rc; /*