protected static string EncodeSpaceSeparatedHexString(byte[] sArray)
        {
            Debug.Assert(sArray != null && sArray.Length != 0);

            int length = (sArray.Length * 3) - 1; // two chars per byte, plus 1 space between each

            return(string.Create(length, sArray, (hexOrder, sArray) =>
            {
                int j = 0;

                for (int i = 0; i < sArray.Length; i++)
                {
                    if (i != 0)
                    {
                        hexOrder[j++] = ' ';
                    }

                    int digit = sArray[i];
                    hexOrder[j++] = HexConverter.ToCharUpper(digit >> 4);
                    hexOrder[j++] = HexConverter.ToCharUpper(digit);
                }

                Debug.Assert(j == hexOrder.Length);
            }));
        }
Exemple #2
0
        private static string?EncodeHexString(byte[]?sArray, uint start, uint end, bool spaceSeparated)
        {
            string?result = null;

            if (sArray != null)
            {
                uint len = (end - start) * 2;

                if (spaceSeparated)
                {
                    // There will be n-1 spaces between n bytes.
                    len += (end - start - 1);
                }

                char[] hexOrder = new char[len];

                for (uint i = start, j = 0; i < end; i++)
                {
                    if (spaceSeparated && i > start)
                    {
                        hexOrder[j++] = ' ';
                    }

                    int digit = sArray[i];
                    hexOrder[j++] = HexConverter.ToCharUpper(digit >> 4);
                    hexOrder[j++] = HexConverter.ToCharUpper(digit);
                }

                result = new string(hexOrder);
            }

            return(result);
        }