十六进制的数最多不会超过8位,则最大的数不会超过16的8次方,也就是2的32次方,恰巧处在int的边界范围,所以直接开long long 用C语言中的读入 读出函数就可以直接转换,当然还有当时自己受十六进制转换八进制的影响,写出了代码2
AC代码#includeAc代码2int main() { long long x; scanf("%x",&x); printf("%lld",x); return 0; }
#include#include #include #include using namespace std; using namespace std; string s,t; long long n; int main(){ cin >> s; for(int i =0; i < s.length(); i++){ switch(s[i]) { case '0': t+="0000";break; case '1': t+="0001";break; case '2': t+="0010";break; case '3': t+="0011";break; case '4': t+="0100";break; case '5': t+="0101";break; case '6': t+="0110";break; case '7': t+="0111";break; case '8': t+="1000";break; case '9': t+="1001";break; case 'A': t+="1010";break; case 'B': t+="1011";break; case 'C': t+="1100";break; case 'D': t+="1101";break; case 'E': t+="1110";break; case 'F': t+="1111";break; } } int x =t.length(); // cout << t << endl; // cout << x <
总结:
利用scanf读入时:
%d 读入十进制整数
%o 读入八进制整数
%x 读入十六进制整数
%p 读入指针
另外附一篇讲输入技巧的文章:
C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法



