#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
size_t N = 0;
size_t num_of_bytes = N / 8 + (N % 8 != 0);
uint_least8_t* buff
= malloc(num_of_bytes
* sizeof(uint_least8_t)); if (!buff)
return EXIT_FAILURE;
int buff_pos = 0;
int byte = 0, digit_shift = 0, digit = 0;
for (size_t i = 0; i < N; ++i)
{
byte += digit << digit_shift;
++digit_shift;
if (digit_shift == 8)
{
buff[buff_pos] = byte;
++buff_pos;
byte = 0;
digit_shift = 0;
}
}
if (N % 8 != 0)
buff[buff_pos] = byte;
for (size_t i = 0; i < num_of_bytes; ++i)
printf("%" PRIuLEAST8
" ", buff
[i
]);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+CgppbnQgbWFpbih2b2lkKSAKewoJc2l6ZV90IE4gPSAwOwoJc2NhbmYoIiV6dSIsICZOKTsKCglzaXplX3QgbnVtX29mX2J5dGVzID0gTiAvIDggKyAoTiAlIDggIT0gMCk7Cgl1aW50X2xlYXN0OF90KiBidWZmID0gbWFsbG9jKG51bV9vZl9ieXRlcyAqIHNpemVvZih1aW50X2xlYXN0OF90KSk7CglpZiAoIWJ1ZmYpCgkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKCglpbnQgYnVmZl9wb3MgPSAwOwoJaW50IGJ5dGUgPSAwLCBkaWdpdF9zaGlmdCA9IDAsIGRpZ2l0ID0gMDsKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgTjsgKytpKQoJewoJCXNjYW5mKCIlMWQiLCAmZGlnaXQpOwoKCQlieXRlICs9IGRpZ2l0IDw8IGRpZ2l0X3NoaWZ0OwoJCSsrZGlnaXRfc2hpZnQ7CgkJaWYgKGRpZ2l0X3NoaWZ0ID09IDgpCgkJewoJCQlidWZmW2J1ZmZfcG9zXSA9IGJ5dGU7CgkJCSsrYnVmZl9wb3M7CgkJCWJ5dGUgPSAwOwoJCQlkaWdpdF9zaGlmdCA9IDA7CgkJfQoJfQoJaWYgKE4gJSA4ICE9IDApCgkJYnVmZltidWZmX3Bvc10gPSBieXRlOwoKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX29mX2J5dGVzOyArK2kpCgkJcHJpbnRmKCIlIiBQUkl1TEVBU1Q4ICIgIiwgYnVmZltpXSk7CglmcmVlKGJ1ZmYpOwoJCglyZXR1cm4gMDsKfQo=