o seguinte tenho uma variavel CHAR = 0xFA, que em decimal é 250.
o problema é que quando converto para int é jogado no jtextfield o valor -6, quando deveria aparecer 250.
int i;
i =(int) varchar; = 0xfA
jTextField1.setText(String.valueOf(i)); //aparece "-6"
jTextField2.setText(Integer.toString(i)); // aparece "-6" eu quero o valor 250.
sds
j.silvestre
Se sua definição de byte é “inteiro sem sinal que vai de 0x00 a 0xFF”, em vez de usar um cast (não se esqueça - casts em Java não fazem o que você precisa), faça um AND com 0xFF. Exemplo:
byte b = (byte) 0xFA;
int i = b & 0xFF; // vai obter o valor desejado, que é 0xFA = 250.
acabei de testar isso… e me retornou 250 certinho… vc ta fazendo algo errado
int var = 0xfA;
System.out.println(var);
Cuidado que char != byte. Isso porque o char é equivalente a um “unsigned short” (2 bytes) do C/C++.
Mesmo assim, se você tem esse char 0xFA, você pode usar exatamente a mesma coisa que eu usei:
char c = '\u00FA';
int i = b & 0xFF; // vai obter o valor desejado, que é 0xFA = 250.