aboutsummaryrefslogtreecommitdiffstats
path: root/src/flip_bits.c
blob: f33994ea0254fee2acb70bcea74fc8b0d4ba4f20 (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
#include <stdint.h>
#include "flip_bits.h"

static uint8_t flip_table[256];

void init_flip_bits(void)
{
        int i,k;

        for (i = 0 ; i < 256 ; i++) {
                uint8_t sample = 0 ;
                for (k = 0; k<8; k++) {
                        if ( i & 1 << k ) sample |= 0x80 >>  k;
                }
                flip_table[i] = sample;
        }
}

uint8_t *flip_buf_bits(uint8_t *buf, int len)
{
        int i;
        uint8_t *start = buf;

        for (i = 0 ; i < len; i++) {
                buf[i] = flip_table[(uint8_t)buf[i]];
        }

        return start;
}