Пример #1
0
 private static string GenerateGuidString(FastGuid guid)
 {
     return(string.Create(13, guid.IdValue, (buffer, value) =>
     {
         char[] encode32Chars = s_encode32Chars;
         buffer[12] = encode32Chars[value & 31];
         buffer[11] = encode32Chars[(value >> 5) & 31];
         buffer[10] = encode32Chars[(value >> 10) & 31];
         buffer[9] = encode32Chars[(value >> 15) & 31];
         buffer[8] = encode32Chars[(value >> 20) & 31];
         buffer[7] = encode32Chars[(value >> 25) & 31];
         buffer[6] = encode32Chars[(value >> 30) & 31];
         buffer[5] = encode32Chars[(value >> 35) & 31];
         buffer[4] = encode32Chars[(value >> 40) & 31];
         buffer[3] = encode32Chars[(value >> 45) & 31];
         buffer[2] = encode32Chars[(value >> 50) & 31];
         buffer[1] = encode32Chars[(value >> 55) & 31];
         buffer[0] = encode32Chars[(value >> 60) & 31];
     }));
 }
Пример #2
0
        private static unsafe string GenerateGuidString(FastGuid guid)
        {
            // stackalloc to allocate array on stack rather than heap
            char *charBuffer = stackalloc char[13];

            // ID
            charBuffer[0]  = _encode32Chars[(int)(guid.IdValue >> 60) & 31];
            charBuffer[1]  = _encode32Chars[(int)(guid.IdValue >> 55) & 31];
            charBuffer[2]  = _encode32Chars[(int)(guid.IdValue >> 50) & 31];
            charBuffer[3]  = _encode32Chars[(int)(guid.IdValue >> 45) & 31];
            charBuffer[4]  = _encode32Chars[(int)(guid.IdValue >> 40) & 31];
            charBuffer[5]  = _encode32Chars[(int)(guid.IdValue >> 35) & 31];
            charBuffer[6]  = _encode32Chars[(int)(guid.IdValue >> 30) & 31];
            charBuffer[7]  = _encode32Chars[(int)(guid.IdValue >> 25) & 31];
            charBuffer[8]  = _encode32Chars[(int)(guid.IdValue >> 20) & 31];
            charBuffer[9]  = _encode32Chars[(int)(guid.IdValue >> 15) & 31];
            charBuffer[10] = _encode32Chars[(int)(guid.IdValue >> 10) & 31];
            charBuffer[11] = _encode32Chars[(int)(guid.IdValue >> 5) & 31];
            charBuffer[12] = _encode32Chars[(int)guid.IdValue & 31];

            // string ctor overload that takes char*
            return(new string(charBuffer, 0, 13));
        }