1 条题解
-
0
十六进制转十进制(10位以内)
这道题非常简单,10位十六进制数可以直接用
unsigned long long存储,直接逐位计算即可。C++ 实现代码
#include <iostream> #include <string> #include <cctype> using namespace std; int main() { string hex; cin >> hex; // 用 64 位整数存储结果,足够存 10 位十六进制数 unsigned long long dec = 0; for (int i = 0; i < hex.size(); i++) { char c = hex[i]; int num; // 转换当前位为数字 if (isdigit(c)) { num = c - '0'; } else { // 大写字母 A-F 转 10-15 num = toupper(c) - 'A' + 10; } // 核心公式:dec = dec * 16 + 当前位数字 dec = dec * 16 + num; } cout << dec << endl; return 0; }核心原理
- 逐位计算
从左到右遍历每一位:
十进制 = 十进制 * 16 + 当前位数字 - 字符转数字
0-9→ 直接转数字A-F/a-f→ 转成 10-15
- 数据类型
unsigned long long可以轻松容纳10位十六进制数。
测试示例
输入:
2ECF输出:
11983总结
- 10位十六进制 → 用
unsigned long long完全足够 - 核心公式:dec = dec * 16 + 当前位
- 代码简洁、直接、无坑,可直接提交
- 逐位计算
从左到右遍历每一位:
- 1
信息
- ID
- 749
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 10
- 标签
- 递交数
- 5
- 已通过
- 4
- 上传者
粤公网安备44195502000195号