bool bar_decode_ascii(struct barcode *bc) { unsigned char code[BARCODE_ASCII_BYTES]; int i; int bit=0; for (i=0; i < BARCODE_ASCII_BYTES; i++) if (!decode_symbol(bc->ascii[i], &code[i])) { fprintf(stderr, "Decoding `%s' digit %u failed\n", bc->ascii, i); return false; } for (i=0; i < sizeof(bc->data); i++) bc->data[i] = pull_bits(code, &bit, 8); bc->checksum = pull_bits(code, &bit, BARCODE_CHECKSUM_BITS); return true; }
int mrg32k5a_init_str( RandomState *s, const char *src, int len ) { int ptr = 0; mrg32k5a_init( s, 0x1234567, 0x7654321 ); pull_bits( src, len, &ptr, &s->s10, m1 ); pull_bits( src, len, &ptr, &s->s11, m1 ); pull_bits( src, len, &ptr, &s->s12, m1 ); pull_bits( src, len, &ptr, &s->s13, m1 ); pull_bits( src, len, &ptr, &s->s14, m1 ); pull_bits( src, len, &ptr, &s->s20, m2 ); pull_bits( src, len, &ptr, &s->s21, m2 ); pull_bits( src, len, &ptr, &s->s22, m2 ); pull_bits( src, len, &ptr, &s->s23, m2 ); pull_bits( src, len, &ptr, &s->s24, m2 ); return ptr; }