File: System\Xml\BinHexEncoder.cs
Web Access
Project: src\src\libraries\System.Private.Xml\src\System.Private.Xml.csproj (System.Private.Xml)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Xml
{
    internal static partial class BinHexEncoder
    {
        private const int CharsChunkSize = 128;
 
        internal static void Encode(byte[] buffer, int index, int count, XmlWriter writer)
        {
            ArgumentNullException.ThrowIfNull(buffer);
 
            ArgumentOutOfRangeException.ThrowIfNegative(index);
            ArgumentOutOfRangeException.ThrowIfNegative(count);
            ArgumentOutOfRangeException.ThrowIfGreaterThan(count, buffer.Length - index);
 
            char[] chars = new char[(count * 2) < CharsChunkSize ? (count * 2) : CharsChunkSize];
            int endIndex = index + count;
            while (index < endIndex)
            {
                int cnt = (count < CharsChunkSize / 2) ? count : CharsChunkSize / 2;
                HexConverter.EncodeToUtf16(buffer.AsSpan(index, cnt), chars);
                writer.WriteRaw(chars, 0, cnt * 2);
                index += cnt;
                count -= cnt;
            }
        }
 
        internal static string Encode(byte[] inArray, int offsetIn, int count)
        {
            return Convert.ToHexString(inArray, offsetIn, count);
        }
    } // class
} // namespace