程序員幹了兩年了,前兩天跟朋友聊天,他說去金山面試,面試官問他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;
}