.NET 中將十進制數轉換為任意進制
在各種編程場景中,將十進制數轉換為其他進制是一個常見需求。 .NET Framework 對此操作的支持有限,但可以實現一個自定義方法,將數字轉換為任何具有任意字符的進制。
Convert.ToString() 的已知限制
Convert.ToString() 方法只能將數字轉換為以下進制:2、8、10 或 16。如果您需要使用非標准進制,則此限制可能具有局限性。
任意進制的自定義實現
要將數字轉換為任何進制,您可以實現一個自定義方法。一種簡單的方法如下:
<code class="language-csharp">public static string IntToString(int value, char[] baseChars) { string result = string.Empty; int targetBase = baseChars.Length; do { result = baseChars[value % targetBase] + result; value = value / targetBase; } while (value > 0); return result; }</code>
此方法迭代地將輸入數字除以目標進制,並將餘數附加到結果字符串。結果字符串以相反的順序構造,最右邊的數字首先出現。
優化:使用數組緩衝區
為了提高大型數字的性能,建議使用數組緩衝區而不是字符串連接:
<code class="language-csharp">public static string IntToStringFast(int value, char[] baseChars) { int i = 32; char[] buffer = new char[i]; int targetBase = baseChars.Length; do { buffer[--i] = baseChars[value % targetBase]; value = value / targetBase; } while (value > 0); char[] result = new char[32 - i]; Array.Copy(buffer, i, result, 0, 32 - i); return new string(result); }</code>
這種優化對於目標進制中具有許多位數的大型數字特別有效。對於小型數字(目標進制中一位數字),IntToString 通常會更快。
以上是如何將10個數字轉換為.NET中的任何鹼基?的詳細內容。更多資訊請關注PHP中文網其他相關文章!