[ create a new paste ] login | about

Link: http://codepad.org/ZdFCShTF    [ raw code | output | fork ]

C++, pasted on Nov 19:
#include <iostream>

//2(bin) -> 8(oct)
char* bin_to_oct(const char* b, char* o){
	int   i, n, v;
	const char* p;
	char  c, *q;
	char* t = o;

	for(p = b; *p; ++p);

	n = (int)(p - b);
	for(i = n; i >= 3; i -= 3){
		v    = ((b[i-3] - '0') << 2) | 
			   ((b[i-2] - '0') << 1) | (b[i-1] - '0');
		*o++ = (char)(v + '0');
	}

	for(v = 0, n = i; i > 0; --i)
		v |= (b[n-i] - '0') << (i - 1);

	if(v != 0)
		*o++ = (char)(v + '0');

	*o = '\0';
	for(q = t, --o; q < o; ++q, --o){
		c  = *q;
		*q = *o;
		*o = c;
	}
	return t;
}

int main(void){
	char o[32];
	std::cout << bin_to_oct("101", o)            << std::endl;
	std::cout << bin_to_oct("10101011", o)       << std::endl;
	std::cout << bin_to_oct("11000000111101", o) << std::endl;
	return 0;
}


Output:
1
2
3
5
253
30075


Create a new paste based on this one


Comments: