1160: 十进制-十六进制 解题心得
原题
Description
把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示。
Input
每行一个整数x,0<= x <= 2^31。
Output
每行输出对应的八位十六进制整数,包括前导0。
Sample Input
0
1023
Sample Output
0x00000000 0x000003FF
分析:由十进制对n进制的转换 最低位为 x%n
上一位为 x/n%n
再上一位为 x/n/n&n
所以
我的代码
#include<iostream> #include<cstdio> #include<cstring> using namespace std; char a[8]; int main() { int i = 7; long long b; while (cin >> b){ i = 7; memset(a, '0', sizeof(a)); while (b != 0 && i>0){ int x = b % 16; b = b / 16; if (x >= 10){ a[i] = x + 55; i--; } else{ a[i] = x + 48; i--; } } cout << "0x"; for (int j = 0; j < 8; j++){ cout << a[j]; if (j == 7) cout << endl; } } return 0; }