Tranformando para ASCII

14 respostas
M

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.

14 Respostas

J
int valorA = 'A';
//valorA ficaria 41

espero ter ajudado

M

mas como faço o contrario??
receber um inteiro 41, ou uma String “41” e passar para ASCII(no caso seria o caracter ‘A’)

R

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???

F

Vejam estes exemplos que elaborei, acredito que ajude a clariar....

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 ));
    }
}

Abraços,
Fábio Heleno

M

obrigado cara! funcionou o que eu queria :grin:

M

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?

F
String str = "A";
int x = str.charAt(0);
M

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?

J

‘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

V

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]

D
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:
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 );
				  } 

	
	}
}
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

D

opss… este post veio a mais, sem querer… alguém poderia apaga-lo???

EDITADO

M
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 =)

F
"FaHeCoN":
Vejam estes exemplos que elaborei, acredito que ajude a clariar....
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 ));
    }
}

Abraços,
Fábio Heleno

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("ÄѶ¥Þ╩│");
void converter(String texto) {
        try {

            byte[] BytesAscii = texto.getBytes("Cp037");
            System.out.println(new String(BytesAscii, "Cp037"));

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

Na dúvida de que encoding usar, de uma olhadinha nos padrões de Encodings suportados: [url]http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html[/url]

Abraço,
Fábio Heleno

Criado 10 de maio de 2005
Ultima resposta 13 de mai. de 2005
Respostas 14
Participantes 7