示例#1
0
        private static unsafe bool IsCacheValid(ByteArrayReaderCache <ByteArray, string> byteArrayCache, ByteArray byteArray, string str)
        {
            var byteCount = System.Text.Encoding.UTF8.GetByteCount(str);
            var buffer    = byteArrayCache.GetScratchBuffer(byteCount);

            System.Text.Encoding.UTF8.GetBytes(str, 0, str.Length, buffer, 0);

            var cached   = new ReadOnlySpan <byte>((void *)byteArray.Pointer, byteArray.Length);
            var expected = buffer.AsSpan(0, byteCount);

            return(cached.SequenceEqual(expected));
        }
 private static unsafe string ToString(ByteArray byteArray)
 {
     return(byteArray.Length == 0
         ? string.Empty
         : System.Text.Encoding.UTF8.GetString((byte *)byteArray.Pointer, byteArray.Length));
 }
示例#3
0
 private static string ToString(ByteArray byteArray, ByteArrayReaderCache <ByteArray, string> byteArrayCache)
 {
     return(byteArrayCache.TryGetValue(byteArray, out var value)
         ? value
         : byteArrayCache.Add(byteArray, ToString(byteArray)));
 }