轉換方式類似Excel列序號這種表示方式。A=1,AA=27,BA = 26^2+1。26進制采用A-Z表示。求幫我寫兩個相互轉換的函數,我寫了半天都有各種問題,10進制轉26進制,直接繞死了。我已經找到一種方法了/// <summary>10進制轉26進制(字母)</summary>/// <param name="parameter"></param>/// <returns></returns>public static string NumberToLetter(int parameter){int parameter1 = parameter - 1;string[] radix = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };string result = "";int len = 0;int remainder = 0;len = parameter1 / 26;remainder = parameter1 % 26;result = radix[remainder];while (len > 0){remainder = (len - 1) % 26;len = len / 26;result = radix[remainder] + result;}return result;}
1 回答

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
char [] Cha= new char [26]{ 'Z' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' }; public string ConvTo26( int initialNum) { string Result= "" ; int Mid=initialNum ; int Mod = 26; int Num = 0; bool EndCon = true ; if (Mid < 0) { Result += '-' ; Mid *= -1; } while (EndCon) { Num=Mid / Mod; if (Num > 0) { Result += Cha[Num]; Mid = Mid - Mod * Num; } else { Result += Cha[Mid]; EndCon = false ; } } return Result; } public int ConvTo10( string initialNum) { int Result = 0; int Mod = 26; char [] Mid = initialNum.ToCharArray(); int len = Mid.Length; for ( int i=0; i < len; i++) { if (Mid[len - 1 - i] == '-' ) Result *= -1; else { Result += ( int )Math.Pow(Mod, i) * Array.IndexOf(Cha, Mid[len - 1 - i]); } } return Result; } //你試下吧 |
- 1 回答
- 0 關注
- 139 瀏覽
添加回答
舉報
0/150
提交
取消