为了账号安全,请及时绑定邮箱和手机立即绑定

就是在写一个10进制与26进制互相转换时,怎么都写不对,该怎么办?

就是在写一个10进制与26进制互相转换时,怎么都写不对,该怎么办?

C#
慕少森 2022-06-02 11:07:54
转换方式类似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;        }//你试下吧

 


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号