Eu tenho String name = "admin";
então eu façoString char = name.substring(0,1); //char="a"
Eu quero converter char
para o seu valor ASCII (97), como posso fazer isso em java?
Eu tenho String name = "admin";
então eu façoString char = name.substring(0,1); //char="a"
Eu quero converter char
para o seu valor ASCII (97), como posso fazer isso em java?
Respostas:
Muito simples. Basta lançar o seu char
como um int
.
char character = 'a';
int ascii = (int) character;
No seu caso, você precisa primeiro obter o caractere específico da String e depois convertê-lo.
char character = name.charAt(0); // This gives the character 'a'
int ascii = (int) character; // ascii is now 97.
Embora o elenco não seja necessário explicitamente, ele melhora a legibilidade.
int ascii = character; // Even this will do the trick.
int ascii = (int)name.charAt(0);
Em vez disso:
String char = name.substring(0,1); //char="a"
Você deve usar o charAt()
método
char c = name.charAt(0); // c='a'
int ascii = (int)c;
As várias respostas que pretendem mostrar como fazer isso estão erradas porque os caracteres Java não são caracteres ASCII. Java usa uma codificação multibyte de caracteres Unicode. O conjunto de caracteres Unicode é um superconjunto de ASCII. Portanto, pode haver caracteres em uma sequência Java que não pertençam ao ASCII. Esses caracteres não possuem um valor numérico ASCII, portanto, perguntar como obter o valor numérico ASCII de um caractere Java não pode ser respondido.
Mas por que você quer fazer isso de qualquer maneira? O que você vai fazer com o valor?
Se você deseja o valor numérico para poder converter a String Java em uma string ASCII, a verdadeira questão é "como codifico uma String Java como ASCII". Para isso, use o objeto StandardCharsets.US_ASCII
.
Se você quiser converter a sequência inteira em valores ASCII concatenados, poderá usar isso -
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);
em que você obterá 979899 como saída.
Crédito para isso .
Apenas copiei aqui para que fosse conveniente para os outros.
Converta o caractere para int.
String name = "admin";
int ascii = name.toCharArray()[0];
Além disso :
int ascii = name.charAt(0);
Basta converter o char para um int.
char character = 'a';
int number = (int) character;
O 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]);
}
}
}
É simples, obtenha o caractere desejado e converta-o para int.
String name = "admin";
int ascii = name.charAt(0);
Eu sei que isso já foi respondido de várias formas, mas aqui está o meu trecho de código com uma olhada em todos os caracteres.
Aqui está o código, iniciado com a classe
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
e char
. Uma unidade de texto no Unicode é um grafema, que é um ponto de código base seguido por zero ou mais pontos de código combinados. Um ponto de código, em Java, é codificado em UTF-16, o que pode exigir uma ou duas unidades de código de 16 bits ( char
) para um ponto de código. Para iterar pontos de código, consulte esta resposta . O código já deve estar pronto para o próximo ponto de código U + 1F91E MÃO COM ÍNDICE E DADOS MÉDIOS CRUZADOS, por exemplo.
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 apontou @Raedwald, o Unicode do Java não atende a todos os caracteres para obter o valor ASCII. A maneira correta (Java 1.7+) é a seguinte:
byte[] asciiBytes = "MyAscii".getBytes(StandardCharsets.US_ASCII);
String asciiString = new String(asciiBytes);
//asciiString = Arrays.toString(asciiBytes)
new String(byte[])
usa ainda outra codificação de caracteres - o chamado padrão do sistema, que varia ao longo do tempo, máquinas e usuários; quase nunca é útil. O que você chama asciiString
ainda é de UTF-16, porque é tudo o que o Java tem.
usando Java 9 => String.chars ()
String input = "stackoverflow";
System.out.println(input.chars().boxed().collect(Collectors.toList()));
saída - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
Se você deseja o valor ASCII de todos os caracteres em uma String. Você pode usar isto:
String a ="asdasd";
int count =0;
for(int i : a.toCharArray())
count+=i;
e se você deseja ASCII de um único caractere em uma String, pode:
(int)a.charAt(index);
Eu estava tentando a mesma coisa, mas a melhor e mais fácil solução seria usar charAt e acessar os índices que deveríamos criar uma matriz inteira de tamanho [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.
Caso deseje exibir valores ASCII de String completa, você precisará fazer isso.
String name = "admin";
char[] val = name.toCharArray();
for(char b: val) {
int c = b;
System.out.println("Ascii value of " + b + " is: " + c);
}
Sua saída, neste caso, será: O valor ASCII de a é: 97 O valor ASCII de d é: 100 O valor ASCII de m é: 109 O valor ASCII de m é: 109 O valor ASCII de i é: 105 O valor ASCII de n é: 110
A maneira mais fácil de fazer isso é:
Para String inteira em 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)
fornece o único caractere da matriz String: quando atribuímos cada caractere ao tipo inteiro, o compilador digita a conversão como,
arr[i] = (int) character // Here, every individual character is coverted in ascii value
Mas, para um único personagem:
String name = admin;
asciiValue = (int) name.charAt(0);// for character 'a'
System.out.println(asciiValue);
Para isso, podemos usar imediatamente a classe String
input.codePointAt(index);
Gostaria de dar mais uma sugestão para que toda a string seja convertida nos códigos ascii correspondentes, usando o java 8, por exemplo, "abcde" para "979899100101".
String input = "abcde";
System.out.println(
input.codePoints()
.mapToObj((t) -> "" + t)
.collect(joining()));
String char
compilar. Pode ser que você deseja renomear a variávelString ch