Example #1
0
 /// <summary>
 /// Converts byte array to hex string.
 /// </summary>
 /// <example>
 /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }); // = "000102"
 /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.DashSeparated); // = "00-01-02"
 /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.OXPrefixed | HexStringOptions.CommaSeparated | HexStringOptions.SpaceSeparated); // = "0x00, 0x01, 0x02"
 /// </example>
 /// <param name="byteArray"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 public static string ToString(byte[] byteArray, HexStringOptions options = HexStringOptions.SpaceSeparated)
 => ToString(byteArray, 0, byteArray.Length, options);
Example #2
0
        /// <summary>
        /// Converts byte array to hex string.
        /// </summary>
        /// <example>
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }); // = "000102"
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.DashSeparated); // = "00-01-02"
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.OXPrefixed | HexStringOptions.CommaSeparated | HexStringOptions.SpaceSeparated); // = "0x00, 0x01, 0x02"
        /// </example>
        /// <param name="byteArray"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static string ToString(byte[] byteArray, int start, int length, HexStringOptions options = HexStringOptions.SpaceSeparated)
        {
            var result = new StringBuilder();

            var lineLength = length;
            var brokeLine  = false;
            var line       = 0;

            if ((options & HexStringOptions.EightNewLine) != 0)
            {
                lineLength = 8;
            }
            else if ((options & HexStringOptions.SixteenNewLine) != 0)
            {
                lineLength = 16;
            }

            if ((options & HexStringOptions.ColNumbers) != 0)
            {
                var spacerWidth = 47;

                if ((options & HexStringOptions.LineNumbers) != 0)
                {
                    spacerWidth += 11;
                }

                if ((options & HexStringOptions.AsciiText) != 0)
                {
                    spacerWidth += 19;
                }

                result.Append('-', spacerWidth);
                result.AppendLine();

                if ((options & HexStringOptions.LineNumbers) != 0)
                {
                    result.Append(' ', 11);
                }

                for (var i = 0; i < lineLength; ++i)
                {
                    result.AppendFormat("{0:X2} ", i);
                }

                result.AppendLine();
                result.Append('-', spacerWidth);
                result.AppendLine();
            }

            for (var i = start; i < start + length; ++i)
            {
                if ((i == 0 || brokeLine) && (options & HexStringOptions.LineNumbers) != 0)
                {
                    result.AppendFormat("{0:X8}   ", line++ *lineLength);
                }

                if (i != 0 && !brokeLine)
                {
                    if ((options & HexStringOptions.CommaSeparated) != 0)
                    {
                        result.Append(",");
                    }

                    if ((options & HexStringOptions.SpaceSeparated) != 0)
                    {
                        result.Append(" ");
                    }

                    if ((options & HexStringOptions.DashSeparated) != 0)
                    {
                        result.Append("-");
                    }
                }

                brokeLine = false;

                if ((options & HexStringOptions.OXPrefix) != 0)
                {
                    result.Append("0x");
                }

                if ((options & HexStringOptions.LowerCase) != 0)
                {
                    result.Append(byteArray[i].ToString("x2"));
                }
                else
                {
                    result.Append(byteArray[i].ToString("X2"));
                }

                if (i != 0 && i != byteArray.Length - 1)
                {
                    if ((options & HexStringOptions.EightNewLine) != 0)
                    {
                        if (((i + 1) % 8) == 0)
                        {
                            brokeLine = true;
                        }
                    }
                    else if ((options & HexStringOptions.SixteenNewLine) != 0)
                    {
                        if (((i + 1) % 16) == 0)
                        {
                            brokeLine = true;
                        }
                    }

                    if (brokeLine)
                    {
                        if ((options & HexStringOptions.AsciiText) != 0)
                        {
                            result.Append("   ");
                            for (var j = lineLength - 1; j >= 0; --j)
                            {
                                var b   = byteArray[i - j];
                                var chr = (b > ' ' && b < '~' ? (char)b : '.');
                                result.Append(chr);
                            }
                        }

                        result.AppendLine();
                    }
                }

                if (i == start + length - 1)
                {
                    if ((options & HexStringOptions.AsciiText) != 0)
                    {
                        var remaining = 0;

                        if ((options & HexStringOptions.EightNewLine) != 0)
                        {
                            remaining = (start + length) % 8;
                        }
                        else if ((options & HexStringOptions.SixteenNewLine) != 0)
                        {
                            remaining = (start + length) % 16;
                        }

                        if (remaining == 0)
                        {
                            remaining = lineLength;
                        }

                        for (var j = 0; j < lineLength - remaining; ++j)
                        {
                            result.Append("  ");

                            if ((options & HexStringOptions.CommaSeparated) != 0)
                            {
                                result.Append(",");
                            }

                            if ((options & HexStringOptions.SpaceSeparated) != 0)
                            {
                                result.Append(" ");
                            }

                            if ((options & HexStringOptions.DashSeparated) != 0)
                            {
                                result.Append("-");
                            }
                        }

                        result.Append("   ");
                        for (var j = remaining - 1; j >= 0; --j)
                        {
                            var b   = byteArray[i - j];
                            var chr = (b > ' ' && b < '~' ? (char)b : '.');
                            result.Append(chr);
                        }
                    }
                }
            }

            return(result.ToString().TrimEnd());
        }
Example #3
0
        /// <summary>
        /// Converts byte array to hex string.
        /// </summary>
        /// <example>
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }); // = "000102"
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.DashSeparated); // = "00-01-02"
        /// Hex.ToString(new byte[] { 0x00, 0x01, 0x02 }, HexStringOptions.OXPrefixed | HexStringOptions.CommaSeparated | HexStringOptions.SpaceSeparated); // = "0x00, 0x01, 0x02"
        /// </example>
        /// <param name="byteArray"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public static string ToString(byte[] byteArray, int start, int length, HexStringOptions options = HexStringOptions.SpaceSeparated)
        {
            var result = new StringBuilder(byteArray.Length * 2);

            var brokeLine = false;

            for (var i = start; i < start + length; ++i)
            {
                if (i != 0 && !brokeLine)
                {
                    if ((options & HexStringOptions.CommaSeparated) != 0)
                    {
                        result.Append(",");
                    }

                    if ((options & HexStringOptions.SpaceSeparated) != 0)
                    {
                        result.Append(" ");
                    }

                    if ((options & HexStringOptions.DashSeparated) != 0)
                    {
                        result.Append("-");
                    }
                }

                brokeLine = false;

                if ((options & HexStringOptions.OXPrefix) != 0)
                {
                    result.Append("0x");
                }

                if ((options & HexStringOptions.LowerCase) != 0)
                {
                    result.Append(byteArray[i].ToString("x2"));
                }
                else
                {
                    result.Append(byteArray[i].ToString("X2"));
                }

                if (i != 0 && i != byteArray.Length - 1)
                {
                    if ((options & HexStringOptions.EightNewLine) != 0)
                    {
                        if (((i + 1) % 8) == 0)
                        {
                            Console.WriteLine(result.ToString().Replace(Environment.NewLine, "|"));
                            result.AppendLine();
                            brokeLine = true;
                        }
                    }
                    else if ((options & HexStringOptions.SixteenNewLine) != 0)
                    {
                        if (((i + 1) % 16) == 0)
                        {
                            result.AppendLine();
                            brokeLine = true;
                        }
                    }
                }
            }

            return(result.ToString().Trim());
        }