Beispiel #1
0
        /// <summary>
        /// 바이트 배열을 받아 Hex Code로 Dump해서 문자열로 만든다.
        /// Ultra Edit의 Hex Code Editor에 나타내는 것 처럼
        /// </summary>
        /// <param name="data">원본 데이타</param>
        /// <returns>
        ///	야래와 같은 형식의 문자열을 반환한다.<br/>
        ///	LINE####: XX XX XX XX  XX XX XX XX  XX XX XX XX  XX XX XX XX  CCCCCCCCCCCCCCCC
        /// </returns>
        public static string GetHexDumpString(this byte[] data)
        {
            if (ArrayTool.IsZeroLengthArray(data))
            {
                return(string.Empty);
            }

            // 속도를 높히기 위해서 StringBuilder에 Initail capacity를 충분히 준다.
            //
            var result     = new StringBuilder(data.Length * 6);
            int dataLength = data.Length;

            for (int r = 0; r < dataLength; r += 16)
            {
                result.AppendFormat("{0, 8:}: ", r);

                // Hex Code 넣기
                //
                for (var c = 0; c < 16; c++)
                {
                    if (r + c < data.Length)
                    {
                        result.AppendFormat("{0:X2}", data[r + c]);
                    }
                    else
                    {
                        result.Append("   ");
                    }

                    if (c % 4 == 3)
                    {
                        result.Append(" ");
                    }
                }

                // 옆에 Char 표시
                //
                for (var c = 0; c < 16; c++)
                {
                    if (r + c < data.Length)
                    {
                        if (data[r + c] < 32 || data[r + c] > 255)
                        {
                            result.Append(".");
                        }
                        else
                        {
                            result.Append((char)data[r + c]);
                        }
                    }
                    else
                    {
                        result.Append(" ");
                    }
                }
                result.Append(Environment.NewLine);
            }

            return(result.ToString());
        }
Beispiel #2
0
        /// <summary>
        /// Byte 배열을 Hex 형식의 string으로 변환한다.
        /// </summary>
        /// <remarks>byte.AsString("X2") 를 사용한다.</remarks>
        /// <param name="bytes">바이트 배열</param>
        /// <param name="delimiter">구분자</param>
        /// <returns>16진수 형식의 문자열</returns>
        public static string GetHexStringFromBytes(this byte[] bytes, string delimiter = null)
        {
            if (ArrayTool.IsZeroLengthArray(bytes))
            {
                return(string.Empty);
            }

            delimiter = delimiter ?? string.Empty;
            var result = new StringBuilder(bytes.Length * (delimiter.Length + 2));

            var first = true;

            for (var i = 0; i < bytes.Length; i++)
            {
                if (!first)
                {
                    result.Append(delimiter);
                }

                result.Append(bytes[i].ToString("X2", CultureInfo.InvariantCulture));

                if (first)
                {
                    first = false;
                }
            }

            return(result.ToString());
        }