首先我忘记C里面取1移行输入怎么写了,所以用了C++
但是我会注释的
int main(){
string str; // C可以用一个大的字符数组代替,几十个大小差不多了
int num=0,bits,temp;
char * res;
cin >> str;// 这里换成C的输入函数
// 下面的str.length()可以用strlen(str)代替
for(int i=0; i<str.length(); i++){
int bit = str[i] - '0';
num += bit << (3*(str.size()-1 - i));
//这里每左移3位相当于乘以8,差n位就乘n-1个8
//8进制么,每位就是8的几次方
}
for(bits=0,temp=num; temp !=0; bits++){
temp /=10;
}
res = (char *) malloc(bits+1);
res[bits--]='\0';
temp = num;
while(temp!=0){
res[bits--]=temp%10 + '0';
temp /=10;
}
printf("%s -> %s", str.c_str(), res);
free(res);
return 0;
}
温馨提示:内容为网友见解,仅供参考