Convertir des entiers arbitrairement grands au format hexadécimal en C#
Question :
La conversion de grands entiers (représentés sous forme de chaînes) au format hexadécimal à l'aide de méthodes traditionnelles peut poser des défis en raison de leur énorme ordre de grandeur. Par exemple, une chaîne telle que « 843370923007003347112437570992242323 » ne peut pas être convertie en hexadécimal.
Solution :
Pour résoudre ce problème, on peut utiliser une technique qui manipule directement les nombres, évitant ainsi les limitations des méthodes de conversion standards :
<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>
Cette méthode parcourt les nombres de la chaîne d'entrée, effectue des opérations de multiplication et d'extraction de nombres et accumule la représentation hexadécimale dans la variable hexadécimale. Remarque : Le code original contenait une erreur logique et a été corrigé afin qu'il puisse gérer correctement la conversion hexadécimale de tout grand entier. Le code révisé utilise un algorithme plus efficace et évite les erreurs présentes dans le code original.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!