public class Dump
{
private byte[] _source;
#region コンストラクタ
public Dump (string source)
{
_source = Encoding.Default.GetBytes (source);
}
public Dump (byte [] source)
{
_source = source;
}
public Dump (double source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (float source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (ulong source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (uint source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (ushort source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (long source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (int source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (short source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (char source)
{
_source = BitConverter.GetBytes (source);
}
public Dump (bool source)
{
_source = BitConverter.GetBytes (source);
}
#endregion
public void Write ()
{
Console.WriteLine (" +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF");
StringBuilder builder = new StringBuilder ();
for (int i = 0; i < _source.Length; i++)
{
if ((i % 16) == 0)
{
if (i != 0)
{
Console.Write (builder.ToString ());
var ascii = _source.Skip (i - 16).Take (16).Select (b => b < (byte) 0x20 ? (byte) 0x2e : b).ToArray ();
Console.WriteLine (Encoding.Default.GetString (ascii));
}
builder = new StringBuilder ();
builder.AppendFormat ("{0:X4} ", i);
}
builder.AppendFormat ("{0:X2} ", _source [i]);
}
var remain = _source.Length % 16;
if (remain != 0)
{
Console.Write ("{0,-53}", builder.ToString ());
var ascii = _source.Skip (_source.Length - remain).Take (remain).Select (b => b < (byte) 0x20 ? (byte) 0x2e : b).ToArray ();
Console.WriteLine (Encoding.Default.GetString (ascii));
}
}
}
コメント