4 #include <osmocore/bits.h>
6 /* convert unpacked bits to packed bits, return length in bytes */
7 int osmo_ubit2pbit(pbit_t *out, const ubit_t *in, unsigned int num_bits)
13 for (i = 0; i < num_bits; i++) {
14 uint8_t bitnum = 7 - (i % 8);
16 curbyte |= (in[i] << bitnum);
18 if (i > 0 && i % 8 == 0) {
23 /* we have a non-modulo-8 bitcount */
30 /* convert packed bits to unpacked bits, return length in bytes */
31 int osmo_pbit2ubit(ubit_t *out, const pbit_t *in, unsigned int num_bits)
35 ubit_t *limit = out + num_bits;
37 for (i = 0; i < (num_bits/8)+1; i++) {
39 *cur++ = (byte >> 7) & 1;
42 *cur++ = (byte >> 6) & 1;
45 *cur++ = (byte >> 5) & 1;
48 *cur++ = (byte >> 4) & 1;
51 *cur++ = (byte >> 3) & 1;
54 *cur++ = (byte >> 2) & 1;
57 *cur++ = (byte >> 1) & 1;
60 *cur++ = (byte >> 0) & 1;