十六进制转二进制(递归)
题目描述 Description
将一个十六进制数转化为一个二进制数。
输入描述 Input Description
一行,一个十六进制下的整数
输出描述 Output Description
这个十六进制数对应的二进制结果
样例输入 Sample Input
FEDCBA
样例输出 Sample Output
111111101101110010111010
数据范围及提示 Data Size & Hint
十六进制数转换得到的十进制数结果有可能超过long long。
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int len,cnt=0; 7 void f(string s) 8 { 9 ++cnt; 10 len = s.size(); 11 if(len==0) 12 return; 13 else 14 { 15 int t[4] = {0}, n; 16 if (s[0] >= 'A' && s[0] <= 'F') 17 n = s[0] - 55; 18 else if(s[0] >= 'a' && s[0] <= 'f') 19 n = s[0] - 87; 20 else 21 n = s[0] - '0'; 22 23 for (int i = 3; i >= 0; --i) 24 { 25 t[i] = n % 2; 26 n = n / 2; 27 } 28 if(cnt==1) 29 { 30 int x = 0; 31 for (int i = 0; i < 4; ++i) 32 { 33 if(t[i]!=0) 34 ++x; 35 if(x!=0) 36 cout << t[i]; 37 } 38 } 39 else 40 { 41 for (int i = 0; i < 4; ++i) 42 cout << t[i]; 43 } 44 s.erase(0, 1); 45 f(s); 46 } 47 } 48 49 int main() 50 { 51 string s1; 52 cin >> s1; 53 f(s1); 54 return 0; 55 }

浙公网安备 33010602011771号