Tengo String name = "admin";
entonces hagoString char = name.substring(0,1); //char="a"
Quiero convertir el char
a su valor ASCII (97), ¿cómo puedo hacer esto en Java?
Tengo String name = "admin";
entonces hagoString char = name.substring(0,1); //char="a"
Quiero convertir el char
a su valor ASCII (97), ¿cómo puedo hacer esto en Java?
Respuestas:
Muy simple. Solo lanza tu char
como 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.
int ascii = (int)name.charAt(0);
En lugar de esto:
String char = name.substring(0,1); //char="a"
Deberías usar el charAt()
método.
char c = name.charAt(0); // c='a'
int ascii = (int)c;
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
.
Si desea convertir la cadena completa en valores ASCII concatenados, puede usar esto:
String str = "abc"; // or anything else
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
en donde obtendrá 979899 como salida.
Crédito a esto .
Acabo de copiarlo aquí para que sea conveniente para los demás.
Convierte el carácter a int.
String name = "admin";
int ascii = name.toCharArray()[0];
También :
int ascii = name.charAt(0);
Solo envía el personaje a un int.
char character = 'a';
int number = (int) character;
El valor de number
será 97.
public class Ascii {
public static void main(String [] args){
String a=args[0];
char [] z=a.toCharArray();
for(int i=0;i<z.length;i++){
System.out.println((int)z[i]);
}
}
}
Es simple, obtén el personaje que deseas y conviértelo a int.
String name = "admin";
int ascii = name.charAt(0);
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.
public class CheckChValue { // Class name
public static void main(String[] args) { // class main
String name = "admin"; // String to check it's value
int nameLenght = name.length(); // length of the string used for the loop
for(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 character
int ascii = (int) character; //convert the first character
System.out.println(character+" = "+ ascii); // print the character and it's value in ascii
}
}
}
string
y 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.
String str = "abc"; // or anything else
// Stores strings of integer representations in sequence
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray())
sb.append((int)c);
// store ascii integer string array in large integer
BigInteger mInt = new BigInteger(sb.toString());
System.out.println(mInt);
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
}
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:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
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 asciiString
sigue siendo UTF-16 porque eso es todo lo que Java tiene.
usando Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
salida - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Si desea el valor ASCII de todos los caracteres en una cadena. Puedes usar esto:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
y si quieres ASCII de un solo carácter en una cadena, puedes elegir:
(int)a.charAt(index);
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 = new int[128]; //this will allocate space with 128byte size.
letters[ascii]++; //increments the value of 97 to 1;
System.out.println("Output:" + ascii); //Outputs 97
System.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
La manera fácil de hacer esto es:
Para la cadena completa en ASCII:
public class ConvertToAscii{
public static void main(String args[]){
String abc = "admin";
int []arr = new int[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 ascii
System.out.print(" "+arr[i]);
}
}
}
THe asscii value of each character is:
97 100 109 105 110
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 input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
alguna vez compilará. Puede ser que desee cambiar el nombre de la variable aString ch