| 发表于:2007-03-24 23:23:4524楼 得分:0 |
byte[] data = new byte[] { 0xf2, 0x7d, 0xf2, 0x7d, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0xeb, 0xeb, 0xb7, 0xeb, 0xeb, 0xb7, 0xeb, 0xb7, 0xf2, 0x7d, 0xf2, 0x7d, 32, 23, 43, 54, 0xeb, 0xb7, 0xeb, 0xb7, 0xf2, 0x7d, 0xf2, 0x7d, 12, 0xeb, 0xb7, 0xeb, 0xb7 }; list <byte[]> list = new list <byte[]> (); int flag = 0; int index = 0; list <byte> section = new list <byte> (); foreach ( byte b in data ) { head: if ( flag == 3 ) { if ( b == (byte) 0x7d ) flag++; else { flag = 0; goto head; } } if ( flag == 2 ) { if ( b == (byte) 0xf2 ) flag++; else { flag = 0; goto head; } } if ( flag == 1 ) { if ( b == (byte) 0x7d ) flag++; else { flag = 0; goto head; } } if ( b == (byte) 0xf2 && flag == 0 ) flag++; if ( flag == 4 ) { flag = 5; continue; } if ( flag > 4 ) section.add( b ); end: if ( flag == 8 ) { if ( b == (byte) 0xb7 ) flag++; else { flag = 5; goto end; } } if ( flag == 7 ) { if ( b == (byte) 0xeb ) flag++; else { flag = 5; goto end; } } if ( flag == 6 ) { if ( b == (byte) 0xb7 ) flag++; else { flag = 5; goto end; } } if ( b == (byte) 0xeb && flag == 5 ) flag++; if ( flag == 9 ) { section.removerange( section.count - 4, 4 ); list.add( section.toarray() ); flag = 0; section = new list <byte> (); } } foreach ( byte[] arr in list ) { foreach ( byte b in arr ) { console.write( "{0}, ", convert.tostring( b, 16 ) ); } console.writeline(); } | | |
|