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 サイトの他の関連記事を参照してください。