spacepaste

  1.  
  2. unsigned char * bwrite(unsigned char * encoding) {
  3. // assume host byte size is CHAR_BIT
  4. if(strlen(encoding)%CHAR_BIT != 0) {
  5. printf("warning: bit length is not evenly divisible against a byte, the last byte may be corrupted\n");
  6. }
  7. size_t len = strlen(encoding)/CHAR_BIT;
  8. pi(len)
  9. unsigned char * s = malloc(len);
  10. memset(s, 0, len);
  11. int i;
  12. for( i = 0; i < strlen(encoding); i++) {
  13. s[i>>dts(CHAR_BIT)] |= ( encoding[i] == '1' ? 1 : 0 ) >> ((CHAR_BIT-1)-(i)&(CHAR_BIT-1));
  14. }
  15. s[len] = 0;
  16. return s;
  17. }
  18.