Tengo un char en c #:
char foo = '2';
Ahora quiero obtener 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 un carácter a int sin convertirlo en una cadena? Sé que esto es trivial, pero parece extraño que no haya nada nativo para hacer la conversión directamente.
char.GetNumericValue('¼')
produce 0.25. Las alegrías de Unicode ... ;-)char
aint
sin necesidad de utilizarstring
por primera vez.Esto lo convertirá en un int:
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.
fuente
char
siempre es UTF-16.¿Alguien ha considerado usar
int.Parse()
y meint.TryParse()
gusta esto?Aún mejor así
Es mucho más seguro y menos propenso a errores
fuente
'0'
del personaje.y puedes crear un método estático a partir de él:
fuente
Prueba esto
fuente
'9'
, pero su código tiene9
, que no se compilará.Por defecto, utiliza UNICODE, por lo que le sugiero que utilice el método defectuoso.
int bar = int.Parse(foo.ToString());
Aunque los valores numéricos debajo son los mismos para dígitos y caracteres latinos básicos.
fuente
Esto se convierte en un entero y maneja unicode
CharUnicodeInfo.GetDecimalDigitValue('2')
Puedes leer más aquí .
fuente
La forma real es:
"theNameOfYourInt": el int al que quieres que se transforme tu char.
"theNameOfYourChar": el Char que quieres usar para que se transforme en int.
Deja todo lo demás.
fuente
Principio:
El binario de los caracteres ASCII 0-9 es:
y si toma en cada uno de ellos los primeros 4 LSB (usando bit a bit Y con 8'b00001111 que equivale a 15) obtendrá el número real (0000 = 0,0001 = 1,0010 = 2, ...)
Uso:
fuente
Estoy de acuerdo con @Chad Grant
También correcto si convierte a cadena, entonces puede usar ese valor tan numérico como se dice en la pregunta
Traté de crear un ejemplo más simple y comprensible
char.GetNumericValue (v) devuelve como doble y convierte a (int)
Uso más avanzado como una matriz
fuente
Comparación de algunos de los métodos basados en el resultado cuando el carácter no es un dígito ASCII:
fuente
Estoy usando Compact Framework 3.5, y no tiene un método "char.Parse". Creo que no está mal usar la clase Convert. (Ver CLR a través de C #, Jeffrey Richter)
Funciona con caracteres ASCII o caracteres Unicode
fuente
Esto funcionó para mí:
fuente
int.Parse(foo.ToString())
, excepto por ser menos legible?He visto muchas respuestas pero me parecen confusas. ¿No podemos simplemente usar Type Casting?
Por ejemplo: -
fuente