上一篇
在编程中,C#进制转换是一个常见但又容易让人困惑的话题。无论是二进制、八进制、十进制还是十六进制,甚至是自定义的任意进制(比如三十六进制),我们都需要一种通用方法来处理它们之间的相互转换。本教程将手把手教你如何用 C# 实现任意进制转换,即使你是编程小白也能轻松掌握!
进制(也称“数制”)是表示数字的一种方式。常见的有:
而任意进制则可以是 2 到 36 之间的任何整数(因为通常用 0-9 + A-Z 表示最多 36 个字符)。
C# 提供了一些内置方法,比如:
// 十进制转二进制string binary = Convert.ToString(10, 2); // "1010"// 二进制转十进制int dec = Convert.ToInt32("1010", 2); // 10// 十进制转十六进制string hex = Convert.ToString(255, 16).ToUpper(); // "FF" 但这些方法仅支持 2、8、10、16 进制。如果我们想实现 任意进制转换(比如 5 进制、12 进制、36 进制等),就需要自己写通用方法。
我们可以分两步实现任意进制转换:
FromBase)ToBase)public static long FromBase(string number, int fromBase){ if (fromBase < 2 || fromBase > 36) throw new ArgumentException("进制必须在 2 到 36 之间。"); string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; long result = 0; foreach (char c in number.ToUpper()) { int digitValue = digits.IndexOf(c); if (digitValue == -1 || digitValue >= fromBase) throw new ArgumentException($"字符 '{c}' 不在 {fromBase} 进制的有效范围内。"); result = result * fromBase + digitValue; } return result;} public static string ToBase(long number, int toBase){ if (toBase < 2 || toBase > 36) throw new ArgumentException("进制必须在 2 到 36 之间。"); if (number == 0) return "0"; string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; bool isNegative = number < 0; if (isNegative) number = -number; string result = ""; while (number > 0) { result = digits[(int)(number % toBase)] + result; number /= toBase; } return isNegative ? "-" + result : result;} public static string ConvertBase(string number, int fromBase, int toBase){ long decimalValue = FromBase(number, fromBase); return ToBase(decimalValue, toBase);} // 示例1:二进制 "1010" 转十六进制string result1 = ConvertBase("1010", 2, 16); // "A"// 示例2:十六进制 "FF" 转十进制string result2 = ConvertBase("FF", 16, 10); // "255"// 示例3:十进制 "35" 转三十六进制string result3 = ConvertBase("35", 10, 36); // "Z"// 示例4:五进制 "123" 转八进制string result4 = ConvertBase("123", 5, 8); // "44" BigInteger 类型。通过本文,你已经掌握了如何用 C# 实现任意进制转换的通用方法。无论你是处理嵌入式数据、加密算法,还是单纯想提升编程进制教程中的实战能力,这套方法都能派上用场。记住,核心思想是:先转十进制,再转目标进制。
希望这篇关于 C#通用进制方法 的教程对你有帮助!快去试试吧~
本文由主机测评网于2025-12-24发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251212110.html