Comment convertir des nombres hexadécimaux en nombres décimaux en C# ?
J'aimerais comprendre comment cette ligne decValue.ToString("X") la convertit en Hex.
Comment convertir des nombres hexadécimaux en nombres décimaux en C# ?
La variable decValue est de type Int32. Int32 possède une surcharge ToString() qui peut accepter un certain nombre de chaînes de format qui dictent la façon dont la valeur sera représentée sous forme de chaîne. La chaîne de format "X" signifie hexadécimal, de sorte que 255.ToString("X") renverra la chaîne hexadécimale "FF". Pour plus d'informations, voir msdn.microsoft.com/en-us/library/dwhawy9k.aspx
Bonne réponse. En fait, j'utilise int.TryParse au lieu de int.Parse pour éviter d'avoir à utiliser l'ennuyeux bloc try catch.
+1 ce qui est bien avec Convert.ToInt64(hexValue, 16);
est qu'il effectuera la conversion si le 0x
Le préfixe est là ou pas, alors que certaines des autres solutions ne le sont pas.
@Craig Bonjour, je dois donc faire la conversion en fonction de la taille de la valeur hexagonale ou je peux appliquer ToInt64 pour toutes les valeurs hexagonales, y a-t-il un impact ?
S'il vous plaît, lorsque vous fournissez une solution avec quelque chose qui provient d'un espace de noms spécifique, indiquez de quel espace de noms il s'agit !
Si vous souhaitez obtenir des performances maximales lors de la conversion de nombres hexagonaux en nombres décimaux, vous pouvez utiliser l'approche avec un tableau prérempli de valeurs hexagonales à décimales.
Voici le code qui illustre cette idée. Mon tests de performance a montré qu'il peut être 20 à 40 % plus rapide que Convert.ToInt32(...) :
class TableConvert
{
static sbyte[] unhex_table =
{ -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1
,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1
,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
};
public static int Convert(string hexNumber)
{
int decValue = unhex_table[(byte)hexNumber[0]];
for (int i = 1; i < hexNumber.Length; i++)
{
decValue *= 16;
decValue += unhex_table[(byte)hexNumber[i]];
}
return decValue;
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.