Coficação ANSI

Oi gente… existe alguma biblioteca ou classe que faz a conversao de string ou int para ANSI?
Valeu!

String teste = "abc"; char[] c = teste.toCharArray(); for (char d : c) { System.out.println((int)d); }

Ok, porém char nao abrange apenas valores entre 0 a 127 inteiro?

Imaginemos o numero inteiro 128, que tem o seu correspondente ?.

Como faríamos?

Valeu!

acho que isto sua pergunta

System.out.println((char)128);

bons estudos…

Você quis dizer codificação ASCII, não?
O JAVA trabalha com UNICODE então 128 = U+0080 (decimal 128 = 80h)
Tabelas UNICODE:


Ok, mas quando você usa o comando cast para char ele converte até o inteiro 127.

Na verdade o que eu preciso é q nem na tabela ascII, entro com o decimal 131 e saio com o hexa decimal 83, consequentemente o “f” do ascII. Porem se eu uso esse comando que vc me passou acima ele me retorna 3F 0D (visualizando no text pad), e não 83 como eu espero.

Não, o tipo primitivo char é um 16-bit unsigned integers representing Unicode characters from 0 to 65535 inclusive, logo, a conversão via cast não fica limitado até 127.

Não sei de onde veio esse 3F 0D, “f” em ASCII é 102 em decimal, 66 em hexa.

Você não sacou a parada, vou te explicar. 0xNN, NNh, NNH --> números em hexa.
Os caracters em ASCII são formados por 7 bits, logo, cabem em um único byte. Iniciam em 000000000 (0x00) e vão até 01111111 (0x7F). O bit mais significativo, o que está mais a esquerda, não é usado. Sendo que os caracteres de 0x00 até 0x1F e o 0x7F são de controle, logo, não são impressos. Mais informções em: http://en.wikipedia.org/wiki/ASCII .
Os caracteres Unicode do java são formados por 16 bits, 2 bytes(Na verdade podem ser mais complexos). Usam a notação U+NNNN. O possíveis tipos de Unicode podem ser contrados aqui: http://www.unicode.org/charts/ . Mais informações em: http://en.wikipedia.org/wiki/Unicode .

Aquele link que eu te passei U0000.pdf é o conjunto Latin do Unicode, a tabela ASCII dentro do Unicode. A U0080.pdf é a tabela Latin-1 Supplement com mais alguns outros caracteres da nossa língua, note que ela também possui caracteres de controle que não serão impressos, por exemplo o U+0083 (0x83, 131 decimal).

Se tem eu não conheço.

No JAVA você declara um char unicode assim:

public class Teste {
   public static void main(String[] args) {
      char a ='\u00BF';
      System.out.print(a+"Comprendes?");
   }
}

“Não sei de onde veio esse 3F 0D, “f” em ASCII é 102 em decimal, 66 em hexa”

na verdade esse “f” (éfinho) não era o “f” que você se referiu, era akele simbolo f de função no word, mas dei um ctrl +C ctrl +V e ele fikou como interrogação no browser, por isso não consegui imprimir pra vc ver. Vou fazer uns testes aki com o que você me passou.

Valeu!

Xii cara dei um:

char a =’\u0083’;

no meu arquivo apareceu um símbolo asc porém com seu correspondente hexa 3F…

Estou usando o tex pad que mostra os símbolos e o correspondente em hexa…
Valeu

Sds

[quote]char a =’\u0083’;

no meu arquivo apareceu um símbolo asc porém com seu correspondente hexa 3F… [/quote]

Por favor leia o que eu escrevi.
[quote]A U0080.pdf é a tabela Latin-1 Supplement com mais alguns outros caracteres da nossa língua, note que ela também possui caracteres de controle que não serão impressos, por exemplo o U+0083[/quote]

Se você testar o outro código (char a =’\u00BF’:wink: que te passei vc terá a frase: ¿Comprendes? em terminais que suportem UTF-16, no DOS ele imprime right ceiling no lugar de ¿, pois o DOS tem uma tabela própria.

Olha esse outro aqui:

public class teste {

	public static void main(String[] args) {

	char a = '\u00FB';
	System.out.printf("--> %c (0x%X) <--\n", a, (int)a);
	}
}

Peguei o TexPad4, compilei com ele.
Resultado no meu DOS: --> ¹ (0xFB) <-- ERRADO
Se você compilar via prompt e jogar a saída para um arquivo .txt o bloco de notas será capaz de fazer a leitura correta.
c:\javac teste.java
c:\java teste > texto.txt
Resultado no .txt: --> û (0xFB) <-- CORRETO

Cara… nao sei o que esta acontecendo… talvez seja o metodo como eu imprimo na tela…
Coloquei a linha:

char a = ‘\u0061’;

e não aparece o correspondente em asc (“a”) nem a pau

A saída gerada em hexa é: 39 37

Valeu pela paciência gente…

Alguma outra idéia??

Gente, esse comando exporta certo pro meu arquivo

char a = ‘\u00FB’, retornando o caracter referente ao deciaml 251 ü.

se eu usar o mesmo comando char s = ‘\u0083’ não volta o caracter que eu quero… e sim o “?”.

Saberiam me dizer por que?

E aí gente… é coisa simples ou dificil eu exportar o valor?
Valeu!