235 votes

C# char en int

J'ai donc un char en c#:

char foo = '2';

Maintenant, je veux obtenir les 2 dans un int. Je trouve que Convertir.ToInt32 retourne la vraie valeur décimale du char et non pas la numéro 2. Suivantes:

int bar = Convert.ToInt32(new string(foo, 1));

int.analyser uniquement les travaux sur cordes.

Il n'existe pas de fonction native en C# pour passer d'un char, int sans en faire une chaîne de caractères? Je sais que c'est trivial, mais il semble juste bizarre qu'il n'y a rien de natif de rendre directement à la conversion.

273voto

Jeremy Ruten Points 59989

Cela permettra de convertir un int:

char foo = '2';
int bar = foo - '0';

Cela fonctionne parce que chaque caractère est représenté en interne par un nombre. Les caractères '0' à '9' sont représentés par des nombres consécutifs, afin de trouver la différence entre les caractères '0' et '2', le numéro 2.

222voto

Chad Grant Points 16571

Réponses intéressantes, mais les docs disent différemment:

Utiliser le GetNumericValue méthodes pour convertir un Char objet qui représente un nombre à une valeur numérique de type. Utilisation Analyser et TryParse pour convertir un de caractères dans une chaîne de caractères dans un Char objet. Utiliser ToString pour convertir un Char objet à un objet de type String.

http://msdn.microsoft.com/en-us/library/system.char.aspx

114voto

faulty Points 3342

Personne n'a jamais considéré l'utilisation de int.Parse() et int.TryParse() comme ceci

int bar = int.Parse(foo.ToString());

Encore mieux comme ça

int bar;
if (!int.TryParse(foo.ToString(), out bar))
{
    //Do something to correct the problem
}

Il est beaucoup plus sûr et moins sujette aux erreurs

33voto

sontek Points 4783
char c = '1';
int i = (int)(c-'0');

et vous pouvez créer une méthode statique:

static int ToInt(this char c)
{
    return (int)(c - '0');
}

10voto

Nikolay Points 101

Par défaut vous utiliser l'UNICODE, donc je vous suggère d'utiliser défectueux de la méthode

int bar = int.Parse(foo.ToString());

Même si les valeurs numériques sous sont les mêmes pour les chiffres et Latin de base de la station.

Prograide.com

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.

Powered by:

X