36进制转换成10进制的方法,以R9和10Y为例
R9就是 27 * 36^1 + 9*36^0 = 981
10Y 就是 1* 36^2 + 0 * 36^1 + 34*36^0 =1330
10进制转换成36进制的方法,以1079和52360为例
(1079/36^0) % 36 = 35
(1079/36^1) % 36 = 29
(1079/36^2) < 0
所以1079转换为36进制就是(29,35)即(T,Z)
(52360/36^0) % 36 = 16
(52360/36^1) % 36 = 14
(52360/36^2) % 36 = 4
(52360/36^3) % 36 = 1
(52360/36^4) < 0
所以52360转换为36进制就是(1,4,14,16)
转换过程就是对36的方幂进行求余,然后将余数按照方幂从大到小排列即可。
C++编程实现:
private const string X36 ="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //10进制转换成36进制 public string ConvertTo36(int val) { string result =""; while (val >= 36) { result = X36[val % 36] + result; val /= 36; } if (val >= 0) result = X36[val] + result; return result; } //36进制转换成10进制//math.pow()为math.h中定义的数学函数,意为求幂次。Convert.ToInt32()函数意为将字符串转换成数字。
//indexOf函数是将从头到尾地检索字符串
public int ConvertTo10(string str) { int result = 0; int len = str.Length; for (int i = len; i > 0; i--) { result += X36.IndexOf(str[i - 1]) * Convert.ToInt32(Math.Pow(36, len - i)); } return result; }