编程实现36进制和10进制之间的相互转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013754847/article/details/50865283

36进制转换成10进制的方法,以R910Y为例

R9就是  27 * 36^1 + 9*36^0 =  981

10Y 就是 1* 36^2 + 0 * 36^1 + 34*36^0 =1330


10进制转换成36进制的方法,以107952360为例

(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; }



阅读更多
换一批

没有更多推荐了,返回首页