Print a GUID variable

前端 未结 11 1681
孤城傲影
孤城傲影 2021-02-01 02:12

I have a GUID variable and I want to write inside a text file its value. GUID definition is:

typedef struct _GUID {          // size is 16
    DWORD Data1;
             


        
11条回答
  •  囚心锁ツ
    2021-02-01 02:42

    std::string
    GuidToString(const GUID& guid, bool lower = false)
    {
        const char* hexChars = lower ? "0123456789abcdef" : "0123456789ABCDEF";
    
        auto f = [hexChars](char* p, unsigned char v)
        {
            p[0] = hexChars[v >> 4];
            p[1] = hexChars[v & 0xf];
        };
    
        char s[36];
        f(s, static_cast(guid.Data1 >> 24));
        f(s + 2, static_cast(guid.Data1 >> 16));
        f(s + 4, static_cast(guid.Data1 >> 8));
        f(s + 6, static_cast(guid.Data1));
        s[8] = '-';
        f(s + 9, static_cast(guid.Data2 >> 8));
        f(s + 11, static_cast(guid.Data2));
        s[13] = '-';
        f(s + 14, static_cast(guid.Data3 >> 8));
        f(s + 16, static_cast(guid.Data3));
        s[18] = '-';
        f(s + 19, guid.Data4[0]);
        f(s + 21, guid.Data4[1]);
        s[23] = '-';
        f(s + 24, guid.Data4[2]);
        f(s + 26, guid.Data4[3]);
        f(s + 28, guid.Data4[4]);
        f(s + 30, guid.Data4[5]);
        f(s + 32, guid.Data4[6]);
        f(s + 34, guid.Data4[7]);
    
        return std::string(s, 36);
    }
    

提交回复
热议问题