7 fprintbin(FILE *stream, uint32_t num, unsigned dig)
9 uint32_t mask = 1 << (dig - 1);
10 for(; mask; mask >>= 1) {
11 if (fputc((num & mask)?'1':'0', stream) == EOF)
17 int main(int argc, char *argv[])
19 char *fin_fname = NULL;
23 size_t vector_bytes = 0;
25 int vector_be_ralign = 0;
31 vector_bytes = (vector_bits + 7) / 8;
34 vector_bits = vector_bytes * 8;
36 if (fin_fname != NULL) {
37 fin = fopen(fin_fname, "rb");
39 fprintf(stderr, "%s: cannot open input file %s\n", argv[0], fin_fname);
47 uint8_t buff[vector_bytes];
55 read_res = fread(buff, 1, vector_bytes, fin);
59 fprintf(stderr, "%s: data read error\n", argv[0]);
63 if (read_res < vector_bytes) {
64 fprintf(stderr, "%s: partial read of last element\n", argv[0]);
66 memset(buff + read_res, 0, vector_bytes - read_res);
69 p = buff + (vector_be? 0: vector_bytes - 1);
70 bn = (vector_be & !vector_be_ralign)? 8: vector_bits % 8;
72 for (br = vector_bits; br; br -= bn, bn = 8) {
77 if (!vector_be_ralign)
83 if (fprintbin(stdout, b, bn) < 0) {
84 fprintf(stderr, "%s: output stream write error\n", argv[0]);
90 if (fputc('\n', stdout) == EOF) {
97 if (fin_fname != NULL)