Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan Cekap Menukar Integer Besar Sewenang-wenangnya (String) kepada Heksadesimal dalam C#?

Bagaimana dengan Cekap Menukar Integer Besar Sewenang-wenangnya (String) kepada Heksadesimal dalam C#?

Barbara Streisand
Barbara Streisandasal
2025-01-11 10:19:42548semak imbas

How to Efficiently Convert Arbitrarily Large Integers (Strings) to Hexadecimal in C#?

Tukar integer besar sewenang-wenangnya kepada format heksadesimal dalam C#

Soalan:

Menukar integer besar (diwakili sebagai rentetan) kepada format heksadesimal menggunakan kaedah tradisional boleh menimbulkan cabaran kerana susunan magnitudnya yang besar. Sebagai contoh, rentetan seperti "843370923007003347112437570992242323" tidak boleh ditukar kepada perenambelasan.

Penyelesaian:

Untuk menyelesaikan masalah ini, seseorang boleh menggunakan teknik yang memanipulasi nombor secara langsung, dengan itu mengelakkan pengehadan kaedah penukaran standard:

<code class="language-csharp">        string s = "843370923007003347112437570992242323";
        List<byte> result = new List<byte>();
        result.Add(0);
        foreach (char c in s)
        {
            int val = (int)(c - '0');
            //此处代码有误,需要修正算法逻辑,以下为修正后的代码
            for (int i = result.Count - 1; i >= 0; i--)
            {
                result[i] = (byte)((result[i] * 10 + val) % 16);
                val = (result[i] * 10 + val) / 16;
                if (i == 0 && val != 0)
                {
                    result.Insert(0, (byte)val);
                }
            }
        }

        string hex = "";
        foreach (byte b in result)
            hex = "0123456789ABCDEF"[b] + hex;</code>

Kaedah ini berulang ke atas nombor rentetan input, melaksanakan operasi pendaraban dan pengekstrakan nombor dan mengumpul perwakilan perenambelasan dalam pembolehubah heks. Nota: Kod asal mengandungi ralat logik dan telah diperbetulkan supaya ia boleh mengendalikan penukaran heksadesimal mana-mana integer besar dengan betul. Kod yang disemak menggunakan algoritma yang lebih cekap dan mengelakkan ralat yang terdapat dalam kod asal.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Integer Besar Sewenang-wenangnya (String) kepada Heksadesimal dalam C#?. 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