我们这里介绍的这两个方法的主要作用是对应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 }
今天也分享这两个方法,是我做功能的时候,花了一段时间想出来的,以后对于相应功能的算法,会尽量分享出来,供大家讨论,以获取更好的思路。
(责任编辑:admin) |