/* (272,190)符合化プログラム 1999-03-21 Hiroki Mori このプログラムでは82ビットのシフトレジスタを24ビット・28ビット・30ビット に分割して処理しています。 */ unsigned long r0, r1, r2; unsigned char vbipacket[] = { 0x55, 0x55, 0xa7, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; shift82(int bit) { unsigned long next; next = ((r2 >> 29) & 1) ^ bit; if(next) { r0 ^= 0x00a20208; r1 ^= 0x08808a00; r2 ^= 0x01846008; } r0 <<= 1; r1 <<= 1; r1 |= ((r0 >> 24) & 1); r2 <<= 1; r2 |= ((r1 >> 28) & 1); r0 |= next; } set82(unsigned char *data) { int i, j, k; unsigned char *ptr, byte; r0 = r1 = r2 = 0; j = 0; ptr = data + 3; while(1) { byte = *ptr; for(i = 0; i < 8; ++i) { shift82((byte >> i) & 1); ++j; if(j == 190) goto fin; } ++ptr; } fin: i = 29; byte = *ptr & 0x3f; for(j = 6; j < 8; ++j) byte |= (((r2 >> i--) & 1) << j); *ptr++ = byte; for(k = 0; k < 3; ++k) { byte = 0; for(j = 0; j < 8; ++j) byte |= (((r2 >> i--) & 1) << j); *ptr++ = byte; } byte = 0; for(j = 4; j < 8; ++j) byte |= (((r2 >> i--) & 1) << j); i = 27; for(j = 0; j < 4; ++j) byte |= (((r1 >> i--) & 1) << j); *ptr++ = byte; for(k = 0; k < 3; ++k) { byte = 0; for(j = 0; j < 8; ++j) byte |= (((r1 >> i--) & 1) << j); *ptr++ = byte; } i = 23; for(k = 0; k < 3; ++k) { byte = 0; for(j = 0; j < 8; ++j) byte |= (((r0 >> i--) & 1) << j); *ptr++ = byte; } } main() { int i; set82(vbipacket); for(i = 0; i < 37; ++i) { printf("%02x ", vbipacket[i]); if((i + 1) % 16 == 0) printf("\n"); } printf("\n"); }