Получение последовательности битов из строки C в стиле C? - PullRequest
0 голосов
/ 30 января 2020

Мне нужно получить последовательность бит из char* строки фиксированной длины C в стиле C, как я могу это сделать? Мне нужна последовательность битов, представляющих строку, а не конкретный. Мне нужно сделать это строго в C, а не в C ++.

1 Ответ

3 голосов
/ 30 января 2020

Вы можете использовать простую битовую маску только из одной 1 и сканировать строку по одному байту за раз, начиная с mask = 0x80 (двоичный файл 10000000) и опускаясь до 1 (двоичный файл 00000001) .

#include <stdio.h>

#define N 5

int main(void) {
    char mystring[N] = "abcd";
    unsigned i;
    unsigned char mask;

    for (i = 0; i < N; i++) {
        unsigned char c = mystring[i];
        unsigned char mask = 0x80;

        do {
            putchar(c & mask ? '1' : '0');
            mask >>= 1;
        } while (mask > 0);

        putchar(' ');
    }

    putchar('\n');
    return 0;
}

Результат:

01100001 01100010 01100011 01100100 00000000
...