程序员干了两年了,前两天跟朋友聊天,他说去金山面试,面试官问他2的32次方是多少?16次方?竟然答不上来,我想了想,自己也答不上来,这程序员当的不合格啊。正好自己写了一个小爬虫,想遍历所有url参数(有点low),参数不带特殊字符只有数字和字母,所以想借此机会搞个62进制出来,先介绍基础进制
二,八,十,十六进制
直接转换
参考链接:https://www.cnblogs.com/hitfredrick/p/6403003.html
####十六进制转换为二进制(int–>string)
例:System.Convert.ToString(i, 2);// i为int类型 以0X14为例,输出为10100
间接转换
其他进制转十进制
十进制是人类使用的基础,最容易理解的类型了,其他进制间转换也可以先转十进制然后在转为目标进制
利用System.Convert.ToInt32(s, n);可以将其他进制转换为十进制
例如二进制转十进制:
System.Convert.ToInt32(s, 2);// d为string类型 以“1010”为例,输出为10
十六进制转十进制
System.Convert.ToInt32(“0x41”, 16);//以"0x41"为例,输出为65
十进制转其他进制
使用int的toString()函数,在括号中不同的参数可以对应转不同进制
转二进制
System.Convert.ToString(d, 2);// d为int类型 以4为例,输出为100
转十六进制
123456789.ToString(“X”)
或者
System.Convert.ToString(i, 16);
其他进制
十进制转其他进制
参考了一点大神的代码:http://www.cnblogs.com/edisonchou/p/4620027.html
然后使用的C#自带栈
/// <summary>
/// 十进制转其他进制
/// 只支持16进制及以下
/// </summary>
/// <param name="num">十进制数</param>
/// <param name="dec">要转的进制</param>
/// <returns></returns>
public string ConvertNum(int num, int dec)
{
if (dec < 2 || dec > 16)
{
throw new ArgumentOutOfRangeException("dec", "只支持将十进制数转换为二进制到十六进制数");
}
Stack<char> stack = new Stack<char>();
int residue;
// 余数入栈
while (num != 0)
{
residue = num % dec;
if (residue >= 10)
{
// 如果是转换为16进制且余数大于10则需要转换为ABCDEF
residue = residue + 55;
}
else
{
// 转换为ASCII码中的数字型字符1~9
residue = residue + 48;
}
stack.Push((char)residue);
num = num / dec;
}
// 反序出栈
string result = string.Empty;
while (stack.LongCount() > 0)
{
result += stack.Pop();
}
return result;
}