System.Diagnostics.Debug.Write




デバッグ用出力。

public static void Dump(byte[] b)
{
string s;
int l = 0;

System.Diagnostics.Debug.WriteLine("");
System.Diagnostics.Debug.Write("       ");
for(int i = 0; i < 16; i++)
System.Diagnostics.Debug.Write("+" + i.ToString("x") + " ");
System.Diagnostics.Debug.WriteLine("");

int cnt = ((b.Length - 1) / 16 + 1) * 16;
for(int i = 0; i < cnt; i++)
{
if(i % 16 == 0)
System.Diagnostics.Debug.Write("0x" + i.ToString("x4") + " ");

if(i < b.Length)
{
System.Diagnostics.Debug.Write(b[i].ToString("x2") + " ");
l++;
}
else
System.Diagnostics.Debug.Write("   ");
if(i % 16 == 15)
{
s = Encoding.ASCII.GetString(b, (i / 16) * 16, l);
System.Diagnostics.Debug.Write(s);
System.Diagnostics.Debug.WriteLine(" ");
l = 0;
}
}
}

/* 出力はこんな感じ
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f
0x0000 59 4d 53 47 00 00 00 00 00 31 00 57 00 00 00 01 YMSG
0x0010 63 36 9a 03 31 c0 80 6d 61 72 75 67 75 75 c0 80 c61@
0x0020 39 34 c0 80 44 4d 62 32 32 4d 49 38 2e 42 73 36 94@
0x0030 67 37 31 39 5a 63 31 34 54 41 2d 2d c0 80 31 33 g719Zc14TA--@
0x0040 c0 80 30 c0 80                                  @
*/

コンソールだと文字が存在しないコードもドット(.)で表示したんだけどなぁ。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です