fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <inttypes.h>
  4.  
  5. int main(void)
  6. {
  7. size_t N = 0;
  8. scanf("%zu", &N);
  9.  
  10. size_t num_of_bytes = N / 8 + (N % 8 != 0);
  11. uint_least8_t* buff = malloc(num_of_bytes * sizeof(uint_least8_t));
  12. if (!buff)
  13. return EXIT_FAILURE;
  14.  
  15. int buff_pos = 0;
  16. int byte = 0, digit_shift = 0, digit = 0;
  17. for (size_t i = 0; i < N; ++i)
  18. {
  19. scanf("%1d", &digit);
  20.  
  21. byte += digit << digit_shift;
  22. ++digit_shift;
  23. if (digit_shift == 8)
  24. {
  25. buff[buff_pos] = byte;
  26. ++buff_pos;
  27. byte = 0;
  28. digit_shift = 0;
  29. }
  30. }
  31. if (N % 8 != 0)
  32. buff[buff_pos] = byte;
  33.  
  34. for (size_t i = 0; i < num_of_bytes; ++i)
  35. printf("%" PRIuLEAST8 " ", buff[i]);
  36. free(buff);
  37.  
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 4396KB
stdin
27
11111111 00000001 01010101 011
stdout
255 128 170 6