summaryrefslogtreecommitdiff
path: root/src/bytesToBitSequence.c
blob: 595370269b248671168a56261aca8b029847eea1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "include/stat_fncs.h"

static unsigned char _compute(unsigned char b, unsigned char factor)
{
    if ((factor & b) == factor) {
        return 0x01;
    } else {
        return 0x00;
    }
}

int BytesToBitSequence(unsigned char *in, int inl, BitSequence *outbuf, int bufsize)
{
    int j = 0, i = 0;
    if (bufsize < inl * 8) {
        return 0;
    }

    for (i = 0; i < inl; ++i) {
        j = i * 8;
        outbuf[j] = (BitSequence) (_compute(in[i], 0x80));
        outbuf[j + 1] = (BitSequence) (_compute(in[i], 0x40));
        outbuf[j + 2] = (BitSequence) (_compute(in[i], 0x20));
        outbuf[j + 3] = (BitSequence) (_compute(in[i], 0x10));
        outbuf[j + 4] = (BitSequence) (_compute(in[i], 0x08));
        outbuf[j + 5] = (BitSequence) (_compute(in[i], 0x04));
        outbuf[j + 6] = (BitSequence) (_compute(in[i], 0x02));
        outbuf[j + 7] = (BitSequence) (_compute(in[i], 0x01));
    }
    return 1;
}