From e8c6b7d3a2dd6904341c7348a5a8fe90e69b5942 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Mon, 1 Jul 2019 11:24:19 +0300 Subject: [PATCH] Correct UUID to string --- components/net/cpp/include/ftl/uuid.hpp | 34 ++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/components/net/cpp/include/ftl/uuid.hpp b/components/net/cpp/include/ftl/uuid.hpp index 836e8f495..99f0626e6 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; /* -- GitLab