ホームページ > バックエンド開発 > C++ > C# で任意に大きな整数 (文字列) を 16 進数に効率的に変換する方法

C# で任意に大きな整数 (文字列) を 16 進数に効率的に変換する方法

Barbara Streisand
リリース: 2025-01-11 10:19:42
オリジナル
522 人が閲覧しました

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

C# で任意の大きな整数を 16 進形式に変換します

質問:

従来の方法を使用して大きな整数 (文字列として表される) を 16 進形式に変換すると、その桁数が膨大であるため、問題が発生する可能性があります。たとえば、「843370923007003347112437570992242323」のような文字列は 16 進数に変換できません。

解決策:

この問題を解決するには、数値を直接操作する手法を使用して、標準の変換方法の制限を回避できます。

<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>
ログイン後にコピー

このメソッドは、入力文字列の数値を反復処理し、乗算と数値抽出演算を実行し、16 進数表現を 16 進数変数に累積します。 注: 元のコードには論理エラーが含まれており、大きな整数の 16 進変換を正しく処理できるように修正されました。 改訂されたコードでは、より効率的なアルゴリズムが使用され、元のコードに存在するエラーが回避されます。

以上がC# で任意に大きな整数 (文字列) を 16 進数に効率的に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート