官方题解 | #十进制整数转十六进制字符串#

十进制整数转十六进制字符串

http://www.nowcoder.com/practice/80eca5f47e6f473893151b863b25aba1

预备知识

  1. 十进制转十六进制规则
    十六进制每一位上可以是从小到大为 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,所以要建立这之间的关系,可以采用查表法。
  2. C++ string 类添加字符的函数 pushback()。

思路、步骤

string toHexString(int n) 实现思路:

  1. 创建一个 string 对象,用于保存转换后的十六进制字符串;
  2. 创建一个字符数组,该字符数组中保存 16 进制表示所需用到的字符,1、2、3、...、9、A、B、C、D、E、F;
  3. 根据十进制转十六进制公式,循环计算商和模,直到商为 0,将模(即余数)保存到一个整数数组中;
  4. 反向遍历余数的数组,根据查表法,从第 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;
}


全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务