Conversão de Dados (de 2 bytes para 2 x 1 byte)

2 respostas
rock-skull

Bom. Meu problema é o seguinte.

Tenho que enviar para um circuito (com FPGA) uma informação de 16 bits (sem sinal, ou seja de 0 a 65535). Estou usando porta serial, a porta serial só envia 1byte por vez.

Eu estou com dúvidas em relação à tipo de dados e conversão.

Já tentei converter pra short, mas por ele ser ‘sinalizado’ não deu certo pra valores maiores que 32767. (Utilizei a função parseShort da classe Short).

Vi que a minha solução ideal é usar o char, que é unsigned e tem 16 bits. Mas não sei muito bem como passar esse número da String para o char.


Isso aqui funcionou. Só que quando eu leio um inteiro e trasnformo em char por cast, já nã funciona (sem definir o valor do char)

char c = 65535;
 out.write(c);
 c = (char) (c >> 8);
 out.write(c);

Alguma idéia ?

2 Respostas

Vingdel

Olá rock-skull,

Não poderia ser assim?

int i = 65535; i = i >> 8; char c = (char)i;

Abraço!

rock-skull

Bom.

Me desculpem, o código estava funcionando bem, era a a outra ponta que estava com problema. Tinha testado antes e tinha funcionado, mas não tinha testado direito. O código que eu fiz funciona.

int i = Integer.parseInt(txtField.getText().trim());
if(i>=0&&i<=65535){
   char c = (char) i;
   out.write(c);  
   c = (char) (c >> 8);    
   out.write(c);  
}
Criado 24 de agosto de 2010
Ultima resposta 24 de ago. de 2010
Respostas 2
Participantes 2