Вы можете использовать простую битовую маску только из одной 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