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’ 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!