在平常的生活和工作中我们最经常使用的是十进制,那么我们有没有想过自己写一个进制呢?例如说实现一个26进制。这就是我曾经的一个想法,在这里简单分享一下!
首先,我们要实现26进制,我们要找到一些符号当做权位,用来记录这个数!我们很容易能想到刚好26个字母不多不少一一对应,可以用来做标记。像十进制一样逢十进一,我们可以逢Z进一,而这里的1用A来表示,2用B表示......依次用24用Y来代替,25用Z来代替。
然后我们考虑进制转换的原理,不妨思考一下十进制转化二进制,就是用倒除的原理,把每次所得到的余数倒序写出来就是二进制,而26进制也可以拿这个倒除的原理,不断的拿余数除以26得到余数。接着把这些余数收集起来,依次取出就是我们的26进制了!想到这里是不是有些头绪了,方法也就不一而足了,下面是我个人的一个方法,这里用的是栈,代码如下:
/// <summary>
/// 26进制
/// </summary>
/// <param name="num"></param>
public static void SwitchDemo(int num)
{
//定义一个栈用来存储数据
Stack stack=new Stack();
//用来将所有的余数压入栈中,当商为零时压入最后一个余数跳出循环
while (true)
{
//商
int quotient = num / 26;
//余数
int remainder = num % 26;
stack.Push(remainder);
if (quotient == 0)
{
break;
}
}
int count = stack.Count;
Console.Write("转化为26进制后是:");
for (int i = 0; i < count; i++)
{
Console.Write((char)('a'+(int)stack.Pop()));
}
Console.WriteLine();
}