Advertisement
Metalhead33

Bitcrusher.h

Dec 6th, 2016
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. #ifndef BITCRUSHER_H
  2. #define BITCRUSHER_H
  3. #include <stdlib.h>
  4. /*
  5. 1 - 0000 0001 - 0 1
  6. 2 - 0000 0010 - 0 2
  7. 3 - 0000 0100 - 0 4
  8. 4 - 0000 1000 - 0 8
  9. 5 - 0001 0000 - 1 0
  10. 6 - 0010 0000 - 2 0
  11. 7 - 0100 0000 - 4 0
  12. 8 - 1000 0000 - 8 0
  13. */
  14. const char bit_masks[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
  15. const size_t bits = sizeof(bit_masks);
  16.  
  17. const char CheckBit(char bit, char place)
  18. {
  19.     return ((bit & bit_masks[place % bits]) != 0);
  20. }
  21.  
  22. const char ProduceBit(char* booleans)
  23. {
  24.     char i=0,temp = 0;
  25.     for(;i<8;++i)
  26.     {
  27.         temp << 1;
  28.         if(char[i]) ++temp;
  29.     }
  30.     return temp;
  31. }
  32.  
  33. char* GenerateBytes(char bit)
  34. {
  35.     char* temp_p;
  36.     char i=0;
  37.     temp_p = (char*)malloc(sizeof(char)*8);
  38.     for(;i<8;++i)
  39.     {
  40.         temp_p[i] = ((bit & bit_masks[i % bits]) != 0);
  41.     }
  42.     return temp_p;
  43. }
  44.  
  45. void ChangeBit(char* bit, char place, char new_value)
  46. {
  47.     char* tmp;
  48.     tmp = GenerateBytes(*bit);
  49.     tmp[place % bits] = new_value;
  50.     *bit = ProduceBit(tmp);
  51.     free(tmp);
  52. }
  53.  
  54. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement