string to bitstring, bitstring to string source code

This snippet submitted by Esa Karjalainen on 2011-09-05. It has been viewed 11452 times.
Rating of 5.4 with 87 votes

wchar_t * bitstr_to_str(wchar_t *buf){
	int i=0, j=0;
	int bitpos=0;
	int bits[8] = { 128, 64, 32, 16, 8, 4, 2, 1 };
	wchar_t * out = calloc(80, sizeof(wchar_t));
	while(buf[i]){
		switch (buf[i]){
			case '1':
			case '0':
				out[j] += atoi(&buf[i])*bits[bitpos];
				bitpos++;
				if (8==bitpos) {					
					bitpos = 0;
					j++;
				}
				break;
			default:
				break;
		}
		i++;
	}
	out[j+1]='\0';
	return out;
}
char * str_to_bitstr(wchar_t * buf){
	int i=0;
	char * out = malloc(9*80*sizeof(char));
	int bits[8] = { 128, 64, 32, 16, 8, 4, 2, 1 };
	
	while(buf[i]){
		int tmp = (int)buf[i];
		for (int j=0; j!=8; j++) {
			if (tmp-bits[j]>=0) {
				out[(j)+i*9] = '1';
				tmp-=bits[j];
			} else {
				out[j+i*9] = '0';
			}
		}
		out[8+i*9] = ' ';
		i++;
	}
	out[i*9] = '\0';
	return out;
}




More C and C++ source code snippets