public class Twenty_six_Sys { private static string[] Level
= {"A", "B", "C", "D", "E", "F", "G", "H", "I", "G", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
/// <summary> /// 数字26进制,转换成字母,用递归算法 ///
</summary> /// <param
name="value"></param> ///
<returns></returns>
public static string Num_to_letter(int value)
{ //此处判断输入的是否是正确的数字,略(正在表达式判断) int remainder =
value % 26; //remainder = (remainder == 0) ? 26 :
remainder; int front = (value - remainder) / 26;
if (front < 26) { return Level[front - 1] +
Level[remainder]; } else
{ return Num_to_letter(front) +
Level[remainder]; } //return "";
} /// <summary> /// 26进制字母转换成数字 ///
</summary> /// <param
name="letter"></param> ///
<returns></returns> public static int
Letter_to_num(string str) {
//此处判断是否是由A-Z字母组成的字符串,略(正在表达式片段) char[] letter =
str.ToCharArray(); //拆分字符串 int reNum = 0; int
power = 1; //用于次方算值 int times = 1; //最高位需要加1 int
num = letter.Length;//得到字符串个数 //得到最后一个字母的尾数值 reNum
+= Char_num(letter[num - 1]);
//得到除最后一个字母的所以值,多于两位才执行这个函数 if (num >= 2)
{ for (int i = num - 1; i > 0; i--)
{ power = 1;//致1,用于下一次循环使用次方计算 for
(int j = 0; j < i; j++) //幂,j次方,应该有函数
{ power *= 26;
} reNum += (power * (Char_num(letter[num - i - 1]) +
times)); //最高位需要加1,中间位数不需要加一 times =
0; } }
//Console.WriteLine(letter.Length); return reNum;
} /// <summary> ///
输入字符得到相应的数字,这是最笨的方法,还可用ASIICK编码; /// </summary> ///
<param name="ch"></param> ///
<returns></returns> private static int Char_num(char
ch) { switch (ch) {
case 'A': return 0; case
'B': return 1; case
'C': return 2; case
'D': return 3; case
'E': return 4; case
'F': return 5; case
'G': return 6; case
'H': return 7; case
'I': return 8; case
'J': return 9; case
'K': return 10; case
'L': return 11; case
'M': return 12; case
'N': return 13; case
'O': return 14; case
'P': return 15; case
'Q': return 16; case
'R': return 17; case
'S': return 18; case
'T': return 19; case
'U': return 20; case
'V': return 21; case
'W': return 22; case
'X': return 23; case
'Y': return 24; case
'Z': return 25;
} return -1; } }
|