como transformo um numero para seu correspondente em ASCII em java?
ex : 41 corresponde ao caracter A.
42 corresponde ao caracter B.
43 corresponde ao caracter C.
como transformo um numero para seu correspondente em ASCII em java?
ex : 41 corresponde ao caracter A.
42 corresponde ao caracter B.
43 corresponde ao caracter C.
int valorA = 'A';
//valorA ficaria 41
espero ter ajudado
mas como faço o contrario??
receber um inteiro 41, ou uma String “41” e passar para ASCII(no caso seria o caracter ‘A’)
Desculpa me entrometer… mas… e quando eu quero passar para o ASCII um texto inteiro???
exemplo… mando ele criar uma caixa de mensagem… a pessoa vai lah e insere o texto que quiser… logo em seguida, transforma o texto inteiro para ASCII e retorna para o usuario o texto em ASCII???
Vejam estes exemplos que elaborei, acredito que ajude a clariar…
[code]public class TesteASCII {
public static void main(String[] args) {
//Transforma um conjunto de bytes e String
byte[] letra = {70,65,72,69,67,79,78};
System.out.println("+> " + new String(letra));
//Pega a letra referente a um inteiro
int x = 115;
System.out.println("-> " + (char)x);
x = 110;
System.out.println("-> " + (char)x);
x = 105;
System.out.println("-> " + (char)x);
x = 119;
System.out.println("-> " + (char)x);
//Pegar uma String, gerar Bytes e retornar String
String sTexto = "PortalJava.Com";
byte[] textoByte = sTexto.getBytes();
System.out.println("=> " + new String( textoByte ));
}
}[/code]
Abraços,
Fábio Heleno
obrigado cara! funcionou o que eu queria
só mais uma coisa, que nao está dando certo…
tenho uma String “A”, quero tranformá-la em character, para dpois obter seu inteiro correspondente, como faço?
String str = "A";
int x = str.charAt(0);
ta acontecendo uma parada estranha…
quando converto o numero 41 p caracter, e jogo no JTextField como String, da “A”…
mas quando pego essa string “A” , e converto para char e dpois inteiro,
aparece “65”… pq isso?
‘A’ é 41 em hexadecimal e 65 em decimal.
provavelmente o JTextField aceita os valores em hexadecimal…enquanto o compilador (nao sei ao certo) aceita em decimla…
naso faco ideia de como resolver, esse email foi so pra dar essa esclarecida mesmo…
tabela ascii
uma sugestão que acho valida é dividir o numero decimal por 16, se o resultado for maior que 16 vc divide de novo, senão a resposta é o resultado como primeiro numero (casa decimal) e o resto da divisão como unidade. Tenta implementar isso em Java.[/code]
Seguinte, estou com um tópico aberto parecido… Seguinte: ao que parece (li em outro forum) o java reconhece UNICODE e não ASCII… fiz, por exemplo
char char2= (char)253;
o que seria equivalente a “ao quadrado”… akele 2 supercrito…
Porém ele me retornou ý… Achei estranho e fiz um código para achar o caractere que procurava…
fiz assim:
[code]import javax.swing.JOptionPane;
public class ASCII
{
public static void main ( String args[] )
{
for(int i=0; i<256;i++){
JOptionPane.showMessageDialog ( null, " Cod: " + i + " : " + (char)i , "Resultado", JOptionPane.PLAIN_MESSAGE );
}
}
} [/code]
E percebi que o que procurava era o código 178. Não conheço os padrões UNICODE, até entrei em www.unicode.org, mas os pdfs n abriram aqui.
Seria muito legal saber o que realmente acontece
opss… este post veio a mais, sem querer… alguém poderia apaga-lo???
EDITADO
bom, o que eu fiz para resolver meu problema foi isso:
quando trasformava de decimal para ASCII dava certo
41 --> A
mas quando eu transformava devolta, me retornava um valor diferente
A – > 65
como 65 é 41 em hexadecimal, soh acrescentei essa transformaçao:
int decimal=65;
String hexa=Integer.toHexString(decimal);
nao resolve a duvida, mas resolveu meu problema =)
[quote=“FaHeCoN”]Vejam estes exemplos que elaborei, acredito que ajude a clariar…
[code]public class TesteASCII {
public static void main(String[] args) {
//Transforma um conjunto de bytes e String
byte[] letra = {70,65,72,69,67,79,78};
System.out.println("+> " + new String(letra));
//Pega a letra referente a um inteiro
int x = 115;
System.out.println("-> " + (char)x);
x = 110;
System.out.println("-> " + (char)x);
x = 105;
System.out.println("-> " + (char)x);
x = 119;
System.out.println("-> " + (char)x);
//Pegar uma String, gerar Bytes e retornar String
String sTexto = "PortalJava.Com";
byte[] textoByte = sTexto.getBytes();
System.out.println("=> " + new String( textoByte ));
}
}[/code]
Abraços,
Fábio Heleno[/quote]
Realmente, trabalhar direto com os padrões ASCII podem trazer algumas diferenças de caracteres depois do 127, porque os valores de 128 a 255 trabalham com binario negativo e cada país usa uma codificação diferente bem como o windows dependendo da linguagem usada por ele.
Uma maneira de lidar com isso, é trabalhar direto com um padrão de codificação. Vou exemplificar para ficar mas claro.
//São caracteres: 142 165 244 190 232 202 179
converter("ÄѶ¥Þ╩│");
[code] void converter(String texto) {
try {
byte[] BytesAscii = texto.getBytes("Cp037");
System.out.println(new String(BytesAscii, "Cp037"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}[/code]
Na dúvida de que encoding usar, de uma olhadinha nos padrões de Encodings suportados: http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html
Abraço,
Fábio Heleno