Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan cekap menukar nombor ke pangkalan sewenang -wenang dalam .NET?

Bagaimana dengan cekap menukar nombor ke pangkalan sewenang -wenang dalam .NET?

Barbara Streisand
Barbara Streisandasal
2025-01-28 10:16:12491semak imbas

How to Efficiently Convert Numbers to Arbitrary Bases in .NET?

Dalam .NET, bilangannya secara berkesan ditukar kepada sebarang kemajuan

Menukar nombor perpuluhan ke dalam mana -mana sistem yang lain adalah tugas yang sama dalam pengaturcaraan. Walaupun .NET menyediakan kaedah untuk menukar kepada set penghantaran terhad, pemaju biasanya memerlukan kaedah yang lebih fleksibel, yang menyokong sebarang kemajuan dan mana -mana set aksara.

Convert.ToString kaedah penukaran tersuai

Untuk menukar nombor ke dalam sebarang kemajuan, anda boleh melaksanakan kaedah tersuai, yang melelehkan nombor dalam kemajuan sasaran. Ini adalah versi mudah dari kaedah ini:

Kaedah ini menggunakan nilai yang akan ditukar dan array watak, yang mewakili aksara dalam salur masuk sasaran. Ia mengulangi nilai pengiraan kecuali bilangan sasaran sasaran dan menambah watak yang sepadan dengan rentetan hasil.
<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>

Gunakan contoh

Untuk menggunakan kaedah ini, anda boleh lulus nilai nilai nilai dan sasaran, contohnya:

Langkah berjaga -jaga prestasi

<code class="language-csharp">// 转换为二进制
string binary = IntToString(5, new char[] { '0', '1' });

// 转换为十六进制
string hex = IntToString(42, 
    new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                 'A', 'B', 'C', 'D', 'E', 'F'});

// 转换为六十进制
string sexagesimal = IntToString(42, 
    new char[] { '0','1','2','3','4','5','6','7','8','9',
    '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',
    'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'});</code>
Kaedah di atas disambungkan untuk membina rentetan hasil dengan rentetan. Untuk jumlah yang besar, ini mungkin perlahan. Versi yang lebih baik akan menggunakan penampan array untuk mengumpul aksara.

Atas ialah kandungan terperinci Bagaimana dengan cekap menukar nombor ke pangkalan sewenang -wenang dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn