- unsigned char * bwrite(unsigned char * encoding) {
- // assume host byte size is CHAR_BIT
- if(strlen(encoding)%CHAR_BIT != 0) {
- printf("warning: bit length is not evenly divisible against a byte, the last byte may be corrupted\n");
- }
- size_t len = strlen(encoding)/CHAR_BIT;
- pi(len)
- unsigned char * s = malloc(len);
- memset(s, 0, len);
- int i;
- for( i = 0; i < strlen(encoding); i++) {
- s[i>>dts(CHAR_BIT)] |= ( encoding[i] == '1' ? 1 : 0 ) >> ((CHAR_BIT-1)-(i)&(CHAR_BIT-1));
- }
- s[len] = 0;
- return s;
- }