JW String charalguna vez compilará. Puede ser que desee cambiar el nombre de la variable aString ch
Vikas Prasad
ASCII? ¿Estás seguro de que eso es lo que quieres? Java utiliza la codificación de caracteres UTF-16 del conjunto de caracteres Unicode (al igual que JavaScript, .NET, VBA, VB4 / 5/6, NCHAR, NVARCHAR, NTFS, API de Windows, ...). Las respuestas se dividen en varias categorías: respondiendo sobre ASCII explícitamente, respondiendo sobre UTF-16 y respondiendo sobre ASCII a través de varios saltos de acceso directo desde UTF-16 (y también algunos son simplemente incorrectos).
Tom Blodget
Respuestas:
297
Muy simple. Solo lanza tu charcomo int.
char character ='a';int ascii =(int) character;
En su caso, primero necesita obtener el Personaje específico de la Cadena y luego lanzarlo.
char character = name.charAt(0);// This gives the character 'a'int ascii =(int) character;// ascii is now 97.
Aunque el lanzamiento no se requiere explícitamente, mejora su legibilidad.
int ascii = character;// Even this will do the trick.
@VKSingla: acordó que no es obligatorio, pero mejora la legibilidad y ayudará al OP a comprenderlo.
SudoRahul
1
¿Por qué crear otra variable char? Incluso si quieres el elenco, ¿por qué no hacerlo así? int ascii = (int)name.charAt(0);
Ricardo Cacheira
@RJ - ok, no lo había pensado
Ricardo Cacheira
9
Los caracteres ASCII tienen códigos de 7 bits de 0 a 127. Por lo tanto, no es necesario usar int. El byte puede almacenar perfectamente cualquier código.
Yahor
Estaba buscando convertir el int a char, la sugerencia de reparto me ayudó a hacerlo al revés de la respuesta.
Isidro Serrano Pineda
49
solo un enfoque diferente
String s ="admin";byte[] bytes = s.getBytes("US-ASCII");
bytes[0] representará ascii de a .. y, por lo tanto, los otros caracteres en toda la matriz.
Solo para recordar que "char" es una palabra reservada en Java.
Frío
12
Las diversas respuestas que pretenden mostrar cómo hacer esto son incorrectas porque los caracteres Java no son caracteres ASCII. Java utiliza una codificación multibyte de caracteres Unicode. El conjunto de caracteres Unicode es un superconjunto de ASCII. Por lo tanto, puede haber caracteres en una cadena Java que no pertenezcan a ASCII. Dichos caracteres no tienen un valor numérico ASCII, por lo que preguntar cómo obtener el valor numérico ASCII de un carácter Java no tiene respuesta.
Pero, ¿por qué quieres hacer esto de todos modos? ¿Qué vas a hacer con el valor?
Si desea el valor numérico para poder convertir la cadena Java en una cadena ASCII, la verdadera pregunta es "¿Cómo codifico una cadena Java como ASCII?". Para eso, usa el objeto StandardCharsets.US_ASCII.
Respuesta perfecta. La conversión de tipos es solo un atajo que no es preciso. Me alegra que su respuesta haya llegado al principio para que la gente no malinterprete el concepto.
Karthik R
La razón por la que necesito saber la cadena ASCII es porque tengo datos Unicode entrando en un proceso de back-end que necesita ubicar ASCII puro en otro lugar, y lo necesito cuando obtengo no Unicode. Por lo general, cuando los usuarios copian y pegan desde MS Word (por ejemplo, comillas dobles y simples curvas, guiones largos, etc.). Mencionar StandardCharsets.US_ASCII es lo correcto, pero eso no le dice al interrogador original cómo usarlo.
Tihamer
public static String displayAsciiCode (String s, boolean useStandard) {String r = ""; byte [] ascii = nulo; if (useStandard) {ascii = s.getBytes (StandardCharsets.US_ASCII); para (int i = 0; i <ascii.length; i ++) {byte b = ascii [i]; r = r + "" + s.charAt (i) + "=" + (int) b; }} else {ascii = s.getBytes (); para (int i = 0; i <ascii.length; i ++) {byte b = ascii [i]; r = r + "" + Character.toString ((char) ascii [i]) + "=" + (int) b; }} return r; }
Tihamer
Llame a lo anterior con: String string = "This" is ”strange"; System.out.println ("cadenas =" + cadena); System.out.println (displayAsciiCode (string, true)); System.out.println (displayAsciiCode (string, false)); El resultado es: cadenas = Esto "es" extraño T = 84 h = 104 i = 105 s = 115 = 32 "= 63 i = 105 s = 115" = 63 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101 T = 84 h = 104 i = 105 s = 115 = 32 ¬ = -30 タ = -128 ワ = -100 i = 105 s = 115 ¬ = -30 タ = -128ン = -99 = 32 s = 115 t = 116 r = 114 a = 97 n = 110 g = 103 e = 101
Tihamer
10
Si desea convertir la cadena completa en valores ASCII concatenados, puede usar esto:
String str ="abc";// or anything elseStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);BigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
Si bien este fragmento de código puede resolver la pregunta, incluir una explicación realmente ayuda a mejorar la calidad de su publicación. Recuerde que está respondiendo la pregunta para los lectores en el futuro, y que esas personas podrían no conocer los motivos de su sugerencia de código.
DimaSan
1
Es simple, obtén el personaje que deseas y conviértelo a int.
Sé que esto ya ha sido respondido en varias formas, pero aquí está mi código con una mirada para revisar todos los caracteres.
Aquí está el código, comenzó con la clase.
publicclassCheckChValue{// Class namepublicstaticvoid main(String[] args){// class mainString name ="admin";// String to check it's valueint nameLenght = name.length();// length of the string used for the loopfor(int i =0; i < nameLenght ; i++){// while counting characters if less than the length add one char character = name.charAt(i);// start on the first characterint ascii =(int) character;//convert the first characterSystem.out.println(character+" = "+ ascii);// print the character and it's value in ascii}}
Java usa Unicode para stringy char. Una unidad textual en Unicode es un grafema, que es un punto de código base seguido de cero o más puntos de código combinados. Un punto de código, en Java, está codificado en UTF-16, lo que podría requerir una o dos unidades de código de 16 bits ( char) para un punto de código. Para iterar puntos de código, vea esta respuesta . El código ya debería estar listo para el punto de código CRUZADO U + 1F91E DE LA MANO CON ÍNDICE Y DEDOS MEDIOS, por ejemplo.
Tom Blodget
1
String str ="abc";// or anything else// Stores strings of integer representations in sequenceStringBuilder sb =newStringBuilder();for(char c : str.toCharArray())
sb.append((int)c);// store ascii integer string array in large integerBigInteger mInt =newBigInteger(sb.toString());System.out.println(mInt);
Si bien este código puede responder la pregunta, es mejor explicar lo que hace y agregarle algunas referencias.
Hamid Pourjam
1
String name ="admin";char[] ch = name.toString().toCharArray();//it will read and store each character of String and store into char[].for(int i=0; i<ch.length; i++){System.out.println(ch[i]+"-->"+(int)ch[i]);//this will print both character and its value}
new String(byte[])usa otra codificación de caracteres: el llamado sistema predeterminado, que varía según el tiempo, las máquinas y los usuarios; Casi nunca es útil. Lo que llamas asciiStringsigue siendo UTF-16 porque eso es todo lo que Java tiene.
Tom Blodget
@TomBlodget, estoy de acuerdo. Pero creo que OP quería saber cómo obtener la representación ASCII de un personaje dado. Esto es solo una codificación ya que Java no puede hacer ASCII sin procesar
Estaba intentando lo mismo, pero la mejor y más fácil solución sería usar charAt y acceder a los índices, deberíamos crear una matriz entera de tamaño [128].
String name ="admin";int ascii = name.charAt(0);int[] letters =newint[128];//this will allocate space with 128byte size.
letters[ascii]++;//increments the value of 97 to 1;System.out.println("Output:"+ ascii);//Outputs 97System.out.println("Output:"+ letters[ascii]);//Outputs 1 if you debug you'll see 97th index value will be 1.
En caso de que desee mostrar valores ASCII de la cadena completa, debe hacerlo.
String name ="admin";char[] val = name.toCharArray();for(char b: val){int c = b;System.out.println("Ascii value of "+ b +" is: "+ c);}
Su salida, en este caso, será: el valor Ascii de a es: 97 El valor Ascii de d es: 100 El valor Ascii de m es: 109 El valor Ascii de i es: 105 El valor Ascii de n es: 110
publicclassConvertToAscii{publicstaticvoid main(String args[]){String abc ="admin";int[]arr =newint[abc.length()];System.out.println("THe asscii value of each character is: ");for(int i=0;i<arr.length;i++){
arr[i]= abc.charAt(i);// assign the integer value of character i.e asciiSystem.out.print(" "+arr[i]);}}}
El resultado es:
THe asscii value of each character is:
97 100 109 105 110
Aquí, abc.charAt(i)da el carácter único de la matriz de cadenas: cuando asignamos cada carácter al tipo entero, el compilador realiza la conversión de tipo como,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Pero, para un solo personaje:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Para esto, podríamos usar inmediatamente String classe's
input.codePointAt(index);
Me gustaría dar una sugerencia más para convertir toda la cadena en los códigos ascii correspondientes, utilizando java 8, por ejemplo, "abcde" a "979899100101".
String char
alguna vez compilará. Puede ser que desee cambiar el nombre de la variable aString ch
Respuestas:
Muy simple. Solo lanza tu
char
comoint
.En su caso, primero necesita obtener el Personaje específico de la Cadena y luego lanzarlo.
Aunque el lanzamiento no se requiere explícitamente, mejora su legibilidad.
fuente
int ascii = (int)name.charAt(0);
solo un enfoque diferente
bytes[0]
representará ascii de a .. y, por lo tanto, los otros caracteres en toda la matriz.fuente
En lugar de esto:
Deberías usar el
charAt()
método.fuente
Las diversas respuestas que pretenden mostrar cómo hacer esto son incorrectas porque los caracteres Java no son caracteres ASCII. Java utiliza una codificación multibyte de caracteres Unicode. El conjunto de caracteres Unicode es un superconjunto de ASCII. Por lo tanto, puede haber caracteres en una cadena Java que no pertenezcan a ASCII. Dichos caracteres no tienen un valor numérico ASCII, por lo que preguntar cómo obtener el valor numérico ASCII de un carácter Java no tiene respuesta.
Pero, ¿por qué quieres hacer esto de todos modos? ¿Qué vas a hacer con el valor?
Si desea el valor numérico para poder convertir la cadena Java en una cadena ASCII, la verdadera pregunta es "¿Cómo codifico una cadena Java como ASCII?". Para eso, usa el objeto
StandardCharsets.US_ASCII
.fuente
Si desea convertir la cadena completa en valores ASCII concatenados, puede usar esto:
en donde obtendrá 979899 como salida.
Crédito a esto .
Acabo de copiarlo aquí para que sea conveniente para los demás.
fuente
Convierte el carácter a int.
También :
fuente
Solo envía el personaje a un int.
El valor de
number
será 97.fuente
fuente
Es simple, obtén el personaje que deseas y conviértelo a int.
fuente
Sé que esto ya ha sido respondido en varias formas, pero aquí está mi código con una mirada para revisar todos los caracteres.
Aquí está el código, comenzó con la clase.
}
fuente
string
ychar
. Una unidad textual en Unicode es un grafema, que es un punto de código base seguido de cero o más puntos de código combinados. Un punto de código, en Java, está codificado en UTF-16, lo que podría requerir una o dos unidades de código de 16 bits (char
) para un punto de código. Para iterar puntos de código, vea esta respuesta . El código ya debería estar listo para el punto de código CRUZADO U + 1F91E DE LA MANO CON ÍNDICE Y DEDOS MEDIOS, por ejemplo.fuente
fuente
Como señaló @Raedwald, Unicode de Java no atiende a todos los personajes para obtener un valor ASCII. La forma correcta (Java 1.7+) es la siguiente:
fuente
new String(byte[])
usa otra codificación de caracteres: el llamado sistema predeterminado, que varía según el tiempo, las máquinas y los usuarios; Casi nunca es útil. Lo que llamasasciiString
sigue siendo UTF-16 porque eso es todo lo que Java tiene.Una forma fácil de hacerlo es:
Si imprime "personaje", obtiene 97.
fuente
O puede usar Stream API para 1 carácter o una cadena que comience en Java 1.8:
fuente
usando Java 9 => String.chars ()
salida - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
fuente
Puede verificar el número de ASCII con este código.
Si me equivoco, disculpas.
fuente
Si desea el valor ASCII de todos los caracteres en una cadena. Puedes usar esto:
y si quieres ASCII de un solo carácter en una cadena, puedes elegir:
fuente
Estaba intentando lo mismo, pero la mejor y más fácil solución sería usar charAt y acceder a los índices, deberíamos crear una matriz entera de tamaño [128].
En caso de que desee mostrar valores ASCII de la cadena completa, debe hacerlo.
Su salida, en este caso, será: el valor Ascii de a es: 97 El valor Ascii de d es: 100 El valor Ascii de m es: 109 El valor Ascii de i es: 105 El valor Ascii de n es: 110
fuente
La manera fácil de hacer esto es:
Para la cadena completa en ASCII:
El resultado es:
THe asscii value of each character is: 97 100 109 105 110
Aquí,
abc.charAt(i)
da el carácter único de la matriz de cadenas: cuando asignamos cada carácter al tipo entero, el compilador realiza la conversión de tipo como,arr[i] = (int) character // Here, every individual character is coverted in ascii value
Pero, para un solo personaje:
String name = admin; asciiValue = (int) name.charAt(0);// for character 'a' System.out.println(asciiValue);
fuente
Para esto, podríamos usar inmediatamente String classe's
Me gustaría dar una sugerencia más para convertir toda la cadena en los códigos ascii correspondientes, utilizando java 8, por ejemplo, "abcde" a "979899100101".
fuente