Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdint.h>
- #include <stdlib.h>
- #include <stdio.h>
- int main()
- {
- unsigned int n = 20;
- int* source = (int*)malloc(n * sizeof(int));
- srand(1);
- for (unsigned int i = 0; i < n; ++i)
- {
- source[i] = rand() % 2;
- }
- unsigned int k = (n + 7) / 8;
- uint8_t* compressed = (uint8_t*)calloc(k, sizeof(uint8_t));
- unsigned int i_n = 0;
- for (unsigned int i = 0; i < k; ++i)
- {
- for (int j = 7; j >= 0 && i_n < n; --j, ++i_n)
- {
- if (source[i_n])
- {
- compressed[i] |= source[i_n] << j;
- }
- }
- }
- for (unsigned int i = 0; i < n; ++i)
- {
- printf("%d", source[i]);
- }
- printf("\n");
- for (unsigned int i = 0; i < k; ++i)
- {
- for (int j = 7; j >= 0; --j)
- {
- printf("%d", (compressed[i] & (1 << j)) ? 1 : 0);
- }
- }
- free(compressed);
- free(source);
- }
Advertisement
Add Comment
Please, Sign In to add comment