Tranformando para ASCII

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 :grin:

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

1 curtida