编程基础 - 栈的应用 - 进制/数制转换(Numeral Conversion)
文章目录
1 数制转换说明
数制转换方面,在另一篇文章( 编程基础 - 进制转换(Binary Conversion) )已经做了详细的解释。
这里将不再重新说明,它使用了栈了原理,但并未使用栈。
在这里,我将使用栈重新编写其中的十进制转其它进制。
2 数制转换(C++ Code)
我们的改动非常有限,只是将结果存入一个栈stack<char>
,然后循环打印。
2.1 头文件main.h
#pragma once
#include <vector> // 向量列表
#include <stack> // 栈
#include <unordered_map> // 字典
2.2 主函数文件main.cpp
我们在转换之前,应该先初始化数字到字母的映射(十进制转其它中,char2int
并没有用到):
// 初始化双向映射
// char2int: 字母到数字的映射
// int2char: 数字到字母的映射
void InitNumeralMapping(unordered_map<char, int> &char2int, unordered_map<int, char> &int2char)
{
// 初始化数字 0-9
for (int c = '0', i = 0; c <= '9'; c++, i++)
{
char2int[(char)c] = i;
int2char[i] = (char)c;
}
// 初始化字母 a-z
for (int c = 'a', i = 10; c <= 'z'; c++, i++)
{
char2int[(char)c] = i;
int2char[i] = (char)c