2011-09-16 13 views
22

Tengo un carácter:Obtener valor ASCII en la palabra de entrada

char ch='A' 

Dame método que convierte char to ASCII
o forma que devuelve un ASCII NUMBER.

de salida: 65

+0

le sugiero que lea acerca de Unicode, caracteres de varios bytes, y Java API Carácter – CrackerJack9

+1

Hay una enorme cantidad de personajes que no tienen una representación 'ASCII' en absoluto:' char' tiene un alcance de 65.535, mientras que 'ASCII' está restringido a 128. – Saul

Respuesta

40
char ch='A'; 

System.out.println((int)ch); 
+1

' char' tiene un rango de 65535 mientras que 'ASCII' está restringido a 128. Hay una gran cantidad de caracteres que no tienen una representación' ASCII' en absoluto. El uso de un 'int' lleva a error al pensar que existe una correspondencia de 1 a 1 entre los caracteres Unicode y los códigos' ASCII'. – Saul

+4

@Saul: De hecho. Pero el OP pregunta cómo obtener el código ASCII para un personaje, lo que implica que los caracteres que le interesen tendrán códigos ASCII. –

+0

Los números Unicode para dichos caracteres son iguales a sus equivalentes ASCII porque ** Unicode es un superconjunto completo de ASCII **. Por ejemplo, 'A' en Unicode es' U + 0041' o '65' en decimal. Por el contrario, ASCII no tiene ningún mapeo para el 99% de 'char'-s. Esa es la razón por la que defiendo a favor de los puntos de código. – Saul

2

char (con una minúscula c) es un tipo numérico. Ya posee el valor ascii del char. Sólo echarlo a un entero para mostrarlo como un valor numérico en lugar de un valor textual:

System.out.println("char " + ch + " has the following value : " + (int) ch); 
1

simplemente hacer

int a = ch 

(también esto no tiene nada que ver con el androide)

+0

(y downvoting sin comentarios es grosero) – njzk2

15

Hay es un importante problema relacionado con obtener un código ASCII de un valor de char.

En el sentido correcto, no se puede hacer.

Es porque char tiene un alcance de 65535 mientras que ASCII se limita a 128. Hay una gran cantidad de personajes que no tienen representación ASCII en absoluto.

La forma correcta sería usar un Unicode code point que es el equivalente numérico estándar de un personaje en el universo de Java.

Afortunadamente, Unicode es un superconjunto completo de ASCII. Eso significa que los números Unicode para caracteres latinos son iguales a sus homólogos ASCII. Por ejemplo, A en Unicode es U+0041 o 65 en decimal. Por el contrario, ASCII no tiene ningún mapeo para el 99% de los char-s. Cuento largo:

char ch = 'A'; 
int cp = String.valueOf(ch).codePointAt(0); 

Por otra parte, una de 16 bits primitivachar representa en realidad una unidad de código , no un carácter y por lo tanto se limita a multilingüe básico Plano, por historical reasons. Las entidades que están más allá requieren Characterobjetos que solucionan la limitación fija de longitud de bits.

+0

String.valueOf es pesado. Esta es una forma muy complicada – njzk2

+0

Sin embargo, esta es una forma interesante de obtener el punto de código Unicode en lugar del valor relativo a la codificación. – njzk2

+0

¿por qué estás usando String.valueOf? ya tiene el carácter, simplemente use eso :) – CrackerJack9

4

A char es en realidad un tipo de datos numéricos; puede agregar uno a un int, por ejemplo. Es un short sin firmar (16 bits). En ese sentido, puede simplemente emitir la salida a, por ejemplo, un int para obtener el valor numérico.

Sin embargo, necesita pensar un poco más acerca de lo que está preguntando, no todos los caracteres son valores ASCII. ¿Qué salida espera para â, por ejemplo, o ?

Además, ¿por qué quieres esto? En este día y edad deberías estar pensando en Unicode, no en ASCII.Si le informa a la gente cuál es su objetivo y cómo piensa usar este valor devuelto, podemos casi seguramente informarle sobre una mejor manera de lograrlo.

+1

No es un byte sin signo: es un entero de dos bytes sin signo. –

+0

@JB Buena captura, estaba pensando en 'corto' - ahora arreglado. –

2
char a='a'; 
char A='A'; 
System.out.println((int)a +" "+(int)A); 

Output: 
97 65 
Cuestiones relacionadas