¿Cómo puedo convertir un carácter ascii en un int en C?Cómo convertir un carácter ascii en un int en C
Respuesta
¿Qué hay de:
int a_as_int = (int)'a';
Un valor caracter en C es convertir implícitamente a un int. Por ejemplo, char c; ... printf("%d", c)
imprime el valor ASCII decimal de c
, y int i = c;
pone el valor entero ASCII de c
en i
. También puede convertirlo explícitamente con (int)c
. Si se refiere a otra cosa, como convertir un dígito ASCII a un int, sería c - '0'
, que implícitamente convierte c
en un int y luego resta el valor ASCII de '0'
, concretamente 48 (en C, constantes de caracteres como '0'
son de tipo int, no char, por razones históricas).
¿Está buscando esto:
int c = some_ascii_character;
O simplemente convertir sin asignación:
(int)some_aschii_character;
Estaba buscando el primero, pero el segundo funciona igual de bien. –
¿Se refiere al valor ordinal ASCII? Trate la conversión de tipos como éste:
int x = 'a';
@Jim Balter Disculpe si es obvio, pero me preguntaba cómo se trata de C++ en lugar de c. ¿Es por la terminología o me falta algo? – quasiverse
@quasiverse Mire la edición, es decir, haga clic en el enlace "hace 43 minutos". Tenga en cuenta que mi comentario fue publicado hace 48 minutos. Ten cuidado con esto en general, te morderá en SO. –
Vaya, tonto, esas son las veces que vi cuando publiqué eso, pero por supuesto esos no son los tiempos que la gente verá cuando lo lea. –
Como todo el mundo le ha dicho, se puede convertir directamente ... a menos que quería decir algo así como "¿cómo puedo convertir un carácter ASCII extendido a su UTF-16 o UTF 32 valor ". Esta es una pregunta TOTALMENTE diferente (una al menos tan buena). Y bastante difícil, si no recuerdo mal, si está utilizando solo "puro" C. Entonces podría comenzar aquí: https://stackoverflow.com/questions/114611/what-is-the-best-unicode-library-for-c/114643#114643
(para ASCII Extended me refiero a una de las muchas "extensiones" del conjunto ASCII. 0-127 caracteres del conjunto ASCII base son directamente convertibles a Unicode, mientras que los 128-255 no son). Por ejemplo, ISO_8859-1 http://en.wikipedia.org/wiki/ISO_8859-1 es una extensión de 8 bits para el conjunto ASCII de 7 bits, o las páginas de códigos (bastante famosas) 437 y 850.
Los caracteres ASCII (0-127) en cualquier formato UTF son idénticos a su representación entera. –
@Chris Pero al menos el 50% de las veces, cuando alguien habla de ASCII, quiere decir "ASCII extendido" ... Pero sí, sería interesante poner esta nota en la respuesta. Gracias. – xanatos
Los caracteres ASCII varían en valor de 0 a 127, por lo que convertirlos a UTF-16 o UTF-32 es solo un elenco. Quizás quiera decir algo diferente, como convertir varias codificaciones de bytes como UTF-8, ISO 8859-1, etc. –
Acepto a Ashot y Cwan, pero tal vez quiera convertir un cifrado cifrado como '7' en un int como 7?
Entonces a recomendaría:
char seven = '7';
int i = seven - '0';
o, tal vez se obtiene una advertencia,
int i = (int) (seven - '0');
corregido después de los comentarios, gracias.
No hay advertencia para eso en C. –
Si hubo una advertencia, es más probable que la obtengas para la primera línea, que convierte un tipo más grande (''7'' es una int) a un tipo más pequeño (char) –
No es posible con la biblioteca estándar C99, a menos que escriba manualmente un mapa de constantes de caracteres en el correspondiente valor int ASCII.
Las constantes de caracteres en C como 'a'
no están garantizadas como ASCII.
C99 solo ofrece algunas garantías sobre esas constantes, p. que digits be contiguous.
La palabra ASCII sólo aparece en el C99 N1256 standard draft en las notas de pie de página, y el pie de nota 173) dice:
En una aplicación que utiliza los siete bits de EE.UU. conjunto de caracteres ASCII, los caracteres de impresión son los cuya los valores se encuentran desde 0x20 (espacio) hasta 0x7E (tilde); los caracteres de control son aquellos cuyos valores se encuentran entre 0 (NUL) y 0x1F (EE. UU.) y el carácter 0x7F (DEL).
lo que implica que ASCII no es la única posibilidad
Uso del ASCII a entero función atoi():
#include <stdlib.h>
int num = atoi("23");
- 1. Cómo convertir un valor ASCII en un carácter en .NET
- 2. ¿Convertir ascii a int?
- 3. Cómo convertir un carácter Unicode a su equivalente ASCII
- 4. cómo convertir ascii a unsigned int
- 5. Intentando convertir un int [] en int [,] usando C#
- 6. En Kotlin ¿Cómo puedo convertir un int? a un Int
- 7. Random int 1-255 a carácter en C
- 8. Convertir codificación ascii a int y viceversa en python (rápidamente)
- 9. ¿Cómo convertir una cadena a ascii en binario en C#?
- 10. Cómo convertir un carácter a código clave?
- 11. Cómo convertir o convertir un int sin firmar a int en C?
- 12. ¿Cómo convertir el valor ASCII a un personaje en Objective-C?
- 13. ¿Cómo se escriben los valores hexadecimales de un carácter en ASCII en un archivo de texto?
- 14. Cómo convertir int a enum en C++?
- 15. Obtenga el VK int de un carácter arbitrario en java
- 16. Cómo convertir un NSInteger a un int?
- 17. C# Convertir IntPtr en int
- 18. ¿Cómo convertir un Enum a un int?
- 19. Valor ASCII de un personaje en Python
- 20. Convierte dos caracteres ascii en su representación Ascii extendida de un carácter 'correspondiente'
- 21. ¿Cómo convierto un valor enum de "Llaves" a un carácter "int" en C#?
- 22. Cómo convertir de EBCDIC a ASCII en C# .net
- 23. ¿Cómo puedo convertir un carácter a un número entero en Python, y viceversa?
- 24. Convirtiendo un doble en int en C#
- 25. Cómo obtener el carácter para un valor de ascii dado
- 26. C# convertir un decimal a un int con seguridad
- 27. Cómo convertir un valor int a cadena en Go?
- 28. Cómo convertir hebreo (unicode) a Ascii en C#?
- 29. cómo convertir utf-8 a ASCII en C++?
- 30. ¿Cómo asignar un personaje usando datos ASCII?
realidad 'a' en C++ ya diferencia de C es int. – UmmaGumma
Añadiré la referencia necesaria al argumento: http://stackoverflow.com/questions/433895/why-are-c-character-literals-ints-instead-of-chars – xanatos