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
Lepaskan: 2025-01-11 10:19:42
asal
543 orang telah melayarinya

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:

        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;
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan