预备知识
-
十进制转十六进制规则
十六进制每一位上可以是从小到大为 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 一共16个数,即逢 16 进1,其中用 A,B,C,D,E,F(字母使用大写)这六个字母来分别表示10,11,12,13,14,15。
十进制转化为十六进制计算方式,简单说就是整数除以 16 取余,直到商为 0 为止,然后从最后一个余数读到第一个。由于每次除后得到的余数可能会大于 9,而十六进制采用 A、B、C、D、E、F 表示10,11,12,13,14,15,所以要建立这之间的关系,可以采用查表法。 - C++ string 类添加字符的函数 pushback()。
思路、步骤
string toHexString(int n) 实现思路:
- 创建一个 string 对象,用于保存转换后的十六进制字符串;
- 创建一个字符数组,该字符数组中保存 16 进制表示所需用到的字符,1、2、3、...、9、A、B、C、D、E、F;
- 根据十进制转十六进制公式,循环计算商和模,直到商为 0,将模(即余数)保存到一个整数数组中;
- 反向遍历余数的数组,根据查表法,从第 2 步中对应的字符添加到 string 对象中,遍历结束,得到转换后的十六进制字符串。
代码实现
#include <iostream>
#include <string>
using namespace std;
string toHexString(int n);
int main() {
int n;
cin >> n;
string hexStr = toHexString(n);
cout << hexStr << endl;
return 0;
}
string toHexString(int n) {
string hexStr;
int i = 0, m, num[100];
char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
do {
num[i++] = n % 16;
n = n / 16;
} while (n > 0);
for (i = i - 1; i >= 0; i--) {
m = num[i];
hexStr.push_back(hex[m]);
}
return hexStr;
}



京公网安备 11010502036488号