private string GenerateHexText()
{
StringBuilder sb = new StringBuilder();
if (_data != null)
{
for (int byteIndex = 0; byteIndex < _data.Length; )
{
int lineBytes = Math.Min(_columnCount, _data.Length - byteIndex);
int pad = _columnCount - lineBytes;
int lineIndex = byteIndex;
if (_showAddress)
{
sb.AppendFormat("0x{0:X8} ", _startingAddress + byteIndex);
}
for (int y = 0; y < lineBytes; ++y)
{
sb.AppendFormat("{0:X2} ", _data[lineIndex]);
++lineIndex;
}
for (int y = 0; y < pad; ++y)
{
sb.Append(" ");
}
sb.Append(' ');
lineIndex = byteIndex;
for (int y = 0; y < lineBytes; ++y)
{
char c = ToPrintable(_data[lineIndex]);
sb.Append(c);
++lineIndex;
}
for (int y = 0; y < pad; ++y)
{
sb.Append(' ');
}
sb.AppendLine();
byteIndex += lineBytes;
}
}
_hexText = sb.ToString();
OnPropertyChanged("HexText");
return _hexText;
}