c# char int

C#char a int



char to int c# (13)

¿Alguien ha considerado usar int.Parse() e int.TryParse() como este

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

Aún mejor así

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

Es mucho más seguro y menos propenso a errores

Entonces tengo un char en c #:

char foo = ''2'';

Ahora quiero poner el 2 en un int. Encuentro que Convert.ToInt32 devuelve el valor decimal real del carácter y no el número 2. Lo siguiente funcionará:

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

int.parse solo funciona en cadenas también.

¿No hay una función nativa en C # para pasar de una char a int sin convertirla en una cadena? Sé que esto es trivial, pero parece extraño que no haya nada nativo para hacer la conversión directamente.


Comparación de algunos de los métodos basados ​​en el resultado cuando el personaje no es un dígito ASCII:

char c = ''/n''; Debug.Print($"{c & 15}"); // 10 Debug.Print($"{c ^ 48}"); // 58 Debug.Print($"{c - 48}"); // -38 Debug.Print($"{(uint)c - 48}"); // 4294967258 Debug.Print($"{char.GetNumericValue(c)}"); // -1


Esto convierte a un número entero y maneja unicode

CharUnicodeInfo.GetDecimalDigitValue(''2'')

Puedes leer más here .


Esto funcionó para mí:

int bar = int.Parse("" + foo);


Esto lo convertirá en un int:

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

Esto funciona porque cada personaje está representado internamente por un número. Los caracteres ''0'' a ''9'' están representados por números consecutivos, por lo que encontrar la diferencia entre los caracteres ''0'' y ''2'' da como resultado el número 2.


Estoy usando Compact Framework 3.5, y no tengo un método "char.Parse". Creo que no está mal usar la clase Convert. (Ver CLR a través de C #, Jeffrey Richter)

char letterA = Convert.ToChar(65); Console.WriteLine(letterA); letterA = ''あ''; ushort valueA = Convert.ToUInt16(letterA); Console.WriteLine(valueA); char japaneseA = Convert.ToChar(valueA); Console.WriteLine(japaneseA);

Funciona con ASCII char o Unicode char


He visto muchas respuestas, pero me parecen confusas. ¿No podemos simplemente usar Type Casting?

Por ejemplo: -

int s; char i= ''2''; s = (int) i;


La forma real es:

int theNameOfYourInt = (int) .Char.GetNumericValue (theNameOfYourChar);

"theNameOfYourInt": el int al que quieres que se transforme tu char.

"theNameOfYourChar" - El Char que desea que se use para que se transforme en un int.

Deja todo lo demás.


Por defecto, usa UNICODE, por lo que sugiero utilizar el método defectuoso

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

Aunque los valores numéricos de abajo son los mismos para los dígitos y los caracteres latinos básicos.


Prueba esto

char x = ''9''; // ''9'' = ASCII 57 int b = x - ''0''; //That is ''9'' - ''0'' = 57 - 48 = 9


Respuestas interesantes pero los documentos dicen de manera diferente:

Use los métodos GetNumericValue para convertir un objeto Char que represente un número en un tipo de valor numérico. Use Parse y TryParse para convertir un carácter en una cadena en un objeto Char . Use ToString para convertir un objeto Char a un objeto String .

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


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

y puedes crear un método estático a partir de él:

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


char foo = ''2''; int bar = foo & 15;

El binario de los charecters ASCII 0-9 es:

0 - 00110000

1 - 00110001

2 - 00110010

3 - 00110011

4 - 00110100

5 - 00110101

6 - 00110110

7 - 00110111

8 - 00111000

9 - 00111001

y si toma en cada uno de ellos los primeros 4 LSB (usando Y a nivel de bit con 8''b00001111 que equels a 15) obtiene el número real (0000 = 0,0001 = 1,0010 = 2, ...)