JW irá String charcompilar. Pode ser que você deseja renomear a variávelString ch
Vikas Prasad
ASCII? Tem certeza de que é isso que você quer? Java usa a codificação de caracteres UTF-16 do conjunto de caracteres Unicode (como JavaScript, .NET, VBA, VB4 / 5/6, NCHAR, NVARCHAR, NTFS, API do Windows,…). As respostas se enquadram em várias categorias: respondendo explicitamente sobre ASCII, respondendo sobre UTF-16 e respondendo sobre ASCII através de vários saltos atalhos do UTF-16 (e também alguns estão completamente errados).
precisa
Respostas:
297
Muito simples. Basta lançar o seu charcomo 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.
Apenas para lembrar que "char" é uma palavra reservada em Java.
Fria
12
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.
Resposta perfeita. A conversão de tipo é apenas um atalho que não é preciso. Que bom que sua resposta veio no início, para que as pessoas não entendam mal o conceito.
Karthik R
A razão pela qual eu preciso conhecer a sequência ASCII é porque eu tenho dados Unicode entrando em um processo de back-end que precisa colocar ASCII puro em outro lugar, e quando eu estou recebendo não-Unicode. Geralmente, quando os usuários copiam e colam do MS Word (por exemplo, aspas duplas e simples curvadas, traços longos etc.). Mencionar StandardCharsets.US_ASCII é a coisa correta a ser feita, mas isso não diz ao questionador original como usá-lo.
Tihamer
public static String displayAsciiCode (String s, boolean useStandard) {String r = ""; byte [] ascii = nulo; if (useStandard) {ascii = s.getBytes (StandardCharsets.US_ASCII); for (int i = 0; i <comprimento ascii; i ++) {byte b = ascii [i]; r = r + "" + s.charAt (i) + "=" + (int) b; }} else {ascii = s.getBytes (); for (int i = 0; i <comprimento ascii; i ++) {byte b = ascii [i]; r = r + "" + Character.toString ((char) ascii [i]) + "=" + (int) b; }} retornar r; }
Tihamer
Chame o acima com: String string = "Isso" é "estranho"; System.out.println ("strings =" + string); System.out.println (displayAsciiCode (string, true)); System.out.println (displayAsciiCode (string, false)); O resultado é: strings = Isso é "estranho" 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 = t = 115 116 114 r = a = 97 n = 110 g = 103 e = 101
Tihamér
10
Se você quiser converter a sequência inteira em valores ASCII concatenados, poderá usar isso -
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);
Embora esse trecho de código possa resolver a questão, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código.
DimaSan
1
É simples, obtenha o caractere desejado e converta-o para int.
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
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 stringe 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.
TomTododod
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);
Embora esse código possa responder à pergunta, é melhor explicar o que faz e adicionar algumas referências a ele.
amigos estão dizendo sobre
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 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 asciiStringainda é de UTF-16, porque é tudo o que o Java tem.
21818 Tom Blodget
@ TomBlodget, eu concordo. Mas acho que o OP queria saber como obter a representação ASCII de um determinado personagem. Esta é apenas uma codificação como java não pode fazer ASCII cru
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 =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.
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
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]);}}}
A saída é:
THe asscii value of each character is:
97 100 109 105 110
Aqui, 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 char
compilar. Pode ser que você deseja renomear a variávelString ch
Respostas:
Muito simples. Basta lançar o seu
char
como umint
.No seu caso, você precisa primeiro obter o caractere específico da String e depois convertê-lo.
Embora o elenco não seja necessário explicitamente, ele melhora a legibilidade.
fonte
int ascii = (int)name.charAt(0);
apenas uma abordagem diferente
bytes[0]
representará ascii de a .. e, portanto, os outros caracteres em toda a matriz.fonte
Em vez disso:
Você deve usar o
charAt()
métodofonte
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
.fonte
Se você quiser converter a sequência inteira em valores ASCII concatenados, poderá usar isso -
em que você obterá 979899 como saída.
Crédito para isso .
Apenas copiei aqui para que fosse conveniente para os outros.
fonte
Converta o caractere para int.
Além disso :
fonte
Basta converter o char para um int.
O valor de
number
será 97.fonte
fonte
É simples, obtenha o caractere desejado e converta-o para int.
fonte
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
}
fonte
string
echar
. 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.fonte
fonte
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:
fonte
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ê chamaasciiString
ainda é de UTF-16, porque é tudo o que o Java tem.Uma maneira fácil para isso é:
Se você imprimir "caractere", obtém 97.
fonte
Ou você pode usar a API do Stream para 1 caractere ou uma String iniciada em Java 1.8:
fonte
usando Java 9 => String.chars ()
saída - [115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119]
fonte
Você pode verificar o número do ASCII com este código.
Se eu estiver errado, desculpas.
fonte
Se você deseja o valor ASCII de todos os caracteres em uma String. Você pode usar isto:
e se você deseja ASCII de um único caractere em uma String, pode:
fonte
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].
Caso deseje exibir valores ASCII de String completa, você precisará fazer isso.
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
fonte
A maneira mais fácil de fazer isso é:
Para String inteira em ASCII:
A saída é:
THe asscii value of each character is: 97 100 109 105 110
Aqui,
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);
fonte
Para isso, podemos usar imediatamente a classe String
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".
fonte