#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;
}