private static string Dump(WebSocketFrame frame) { var len = frame.Length; var cnt = (long)(len / 4); var rem = (int)(len % 4); int cntDigit; string cntFmt; if (cnt < 10000) { cntDigit = 4; cntFmt = "{0,4}"; } else if (cnt < 0x010000) { cntDigit = 4; cntFmt = "{0,4:X}"; } else if (cnt < 0x0100000000) { cntDigit = 8; cntFmt = "{0,8:X}"; } else { cntDigit = 16; cntFmt = "{0,16:X}"; } var spFormat = String.Format("{{0,{0}}}", cntDigit); var headerFormat = String.Format( @" {0} 01234567 89ABCDEF 01234567 89ABCDEF {0}+--------+--------+--------+--------+\n", spFormat); var lineFormat = String.Format( "{0}|{{1,8}} {{2,8}} {{3,8}} {{4,8}}|\n", cntFmt ); var footerFmt = String.Format( "{0}+--------+--------+--------+--------+", spFormat ); var buff = new StringBuilder(64); Action <string, string, string, string> linePrinter() { long lineCnt = 0; return((arg1, arg2, arg3, arg4) => { buff.AppendFormat(lineFormat, ++lineCnt, arg1, arg2, arg3, arg4); }); } var printLine = linePrinter(); var bytes = frame.ToArray(); buff.AppendFormat(headerFormat, String.Empty); for (long i = 0; i <= cnt; i++) { var j = i * 4; if (i < cnt) { printLine( Convert.ToString(bytes[j], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 1], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 2], 2).PadLeft(8, '0'), Convert.ToString(bytes[j + 3], 2).PadLeft(8, '0') ); continue; } if (rem > 0) { printLine( Convert.ToString(bytes[j], 2).PadLeft(8, '0'), rem >= 2 ? Convert.ToString(bytes[j + 1], 2).PadLeft(8, '0') : String.Empty, rem == 3 ? Convert.ToString(bytes[j + 2], 2).PadLeft(8, '0') : String.Empty, String.Empty ); } } buff.AppendFormat(footerFmt, String.Empty); return(buff.ToString()); }
private static string dump(WebSocketFrame frame) { int num2; string str1; ulong length = frame.Length; long num3 = (long)(length / (long)4); int num4 = (int)(length % (long)4); if (num3 < (long)10000) { num2 = 4; str1 = "{0,4}"; } else if (num3 < (long)65536) { num2 = 4; str1 = "{0,4:X}"; } else if (num3 >= 4294967296L) { num2 = 16; str1 = "{0,16:X}"; } else { num2 = 8; str1 = "{0,8:X}"; } string str2 = string.Format("{{0,{0}}}", num2); string str3 = string.Format("\r\n{0} 01234567 89ABCDEF 01234567 89ABCDEF\r\n{0}+--------+--------+--------+--------+\\n", str2); string str4 = string.Format("{0}|{{1,8}} {{2,8}} {{3,8}} {{4,8}}|\n", str1); string str5 = string.Format("{0}+--------+--------+--------+--------+", str2); StringBuilder stringBuilder = new StringBuilder(64); Action <string, string, string, string> action = new Func <Action <string, string, string, string> >(() => { long num1 = (long)0; return((string arg1, string arg2, string arg3, string arg4) => { StringBuilder cSu0024u003cu003e8_locals1 = stringBuilder; string str = str4; object[] objArray = new object[5]; long num = num1 + (long)1; num1 = num; objArray[0] = num; objArray[1] = arg1; objArray[2] = arg2; objArray[3] = arg3; objArray[4] = arg4; cSu0024u003cu003e8_locals1.AppendFormat(str, objArray); }); })(); stringBuilder.AppendFormat(str3, string.Empty); byte[] array = frame.ToArray(); for (long i = (long)0; i <= num3; i += (long)1) { long num5 = i * (long)4; if (i < num3) { action(Convert.ToString(array[checked ((IntPtr)num5)], 2).PadLeft(8, '0'), Convert.ToString(array[checked ((IntPtr)(num5 + (long)1))], 2).PadLeft(8, '0'), Convert.ToString(array[checked ((IntPtr)(num5 + (long)2))], 2).PadLeft(8, '0'), Convert.ToString(array[checked ((IntPtr)(num5 + (long)3))], 2).PadLeft(8, '0')); } else if (num4 > 0) { action(Convert.ToString(array[checked ((IntPtr)num5)], 2).PadLeft(8, '0'), (num4 >= 2 ? Convert.ToString(array[checked ((IntPtr)(num5 + (long)1))], 2).PadLeft(8, '0') : string.Empty), (num4 == 3 ? Convert.ToString(array[checked ((IntPtr)(num5 + (long)2))], 2).PadLeft(8, '0') : string.Empty), string.Empty); } } stringBuilder.AppendFormat(str5, string.Empty); return(stringBuilder.ToString()); }