位置:海鸟网 > IT > ASP.NET >

数字和字母的转换的方法(如1转为A,AA转为27)

 我们这里介绍的这两个方法的主要作用是对应Excel的使用,Excel中的列是字母,可以转为数字,然后进行处理。

1、数字转为字母

    思想:字母对应的数字的算法为:26^0 * A + 26 ^ 1 * A ……所以每次除以26,就可以得到每一位的值,让后进行转换。

 1         private string IntToMoreChar(int value)
 2         {
 3             string rtn = string.Empty;
 4             List<int> iList = new List<int>();
 5
 6             //To single Int
 7             while (value / 26 != 0 || value % 26 != 0)
 8             {
 9                 iList.Add(value % 26);
10                 value /= 26;
11             }
12
13             //Change 0 To 26
14             for (int j = 0; j < iList.Count - 1; j++)
15             {
16                 if (iList[j] == 0)
17                 {
18                     iList[j + 1] -= 1;
19                     iList[j] = 26;
20                 }
21             }
22
23             //Remove 0 at last
24             if (iList[iList.Count - 1] == 0)
25             {
26                 iList.Remove(iList[iList.Count - 1]);
27             }
28
29             //To String
30             for (int j = iList.Count - 1; j >= 0; j--)
31             {
32                 char c = (char)(iList[j] + 64);
33                 rtn += c.ToString();
34             }
35
36             return rtn;
37         }

2、字母转数字

    思想:这个相对比较简单,也容易想到,根据规律进行计算即可。

 1         private int MoreCharToInt(string value)
 2         {
 3             int rtn = 0;
 4             int powIndex = 0;
 5
 6             for (int i = value.Length - 1; i >= 0; i--)
 7             {
 8                 int tmpInt = value[i];
 9                 tmpInt -= 64;
10
11                 rtn += (int)Math.Pow(26, powIndex) * tmpInt;
12                 powIndex++;
13             }
14
15             return rtn;
16         }

    今天也分享这两个方法,是我做功能的时候,花了一段时间想出来的,以后对于相应功能的算法,会尽量分享出来,供大家讨论,以获取更好的思路。