C#十进制与任意进制的转换
1 /// <summary> 2 /// 将十进制转换为指定的进制 3 /// </summary> 4 /// <param name="Val">十进制值</param> 5 /// <param name="TargetRadix">目标进制</param> 6 /// <param name="BaseChar">基数列表(长度必须大于源字符串进制,无I,O)</param> 7 /// <returns></returns> 8 public static string JinZhiConvert(ulong Val, int TargetRadix = 0, string BaseChar = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ") 9 { 10 if (TargetRadix == 0 && BaseChar.Length == 0) return "长度与基数不能同时为零"; 11 if (TargetRadix <= 0) TargetRadix = BaseChar.Length; 12 List<string> r = new List<string>(); 13 do 14 { 15 ulong y = Val % (ulong)TargetRadix; 16 r.Add(BaseChar[Convert.ToInt32(y)].ToString()); 17 Val = Convert.ToUInt64(Math.Floor(Val / (decimal)TargetRadix)); 18 } while (Val > 0); 19 r.Reverse(); 20 return string.Join("", r.ToArray()); 21 } 22 23 24 /// <summary> 25 /// 将任意进制转化为十制 26 /// </summary> 27 /// <param name="Val">任意进制的字任串</param> 28 /// <param name="SourceRadix">源字符串的进制</param> 29 /// <param name="BaseChar">基数列表(长度必须大于源字符串进制,无I,O)</param> 30 /// <returns></returns> 31 public static ulong JinZhiConvert(string Val, int SourceRadix = 0, string BaseChar = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ") 32 { 33 ulong r = 0; 34 if (BaseChar == "") return 0; 35 if (SourceRadix == 0) SourceRadix = BaseChar.Length; 36 List<char> v = Val.ToCharArray().ToList(); 37 v.Reverse(); 38 for (int i = 0; i < v.Count; i++) 39 { 40 int index = BaseChar.IndexOf(v[i]); 41 if (index > -1) 42 r += Convert.ToUInt64(index * Math.Pow(SourceRadix, i)); 43 } 44 return r; 45 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】