Olá pessoal. Estou implementado uma comunicação com um equipamento de rede via socket. Quando pego um conjunto de dados para enviar, utilizo o DataOutputStream sobre o OutputStream do Socket com o equipamento, e a codificação enviada dos dados aparentemente vai em ASCII. Preciso que isso vá em hexadecimal pois o equipamento expera que os dados cheguem assim. Ex.:
int headerLength = 33; //em hexa seria 21
O problema é que o valor está sendo enviado como 33 e não 21. Como posso resolver isto?
T+
Já tentou isto:
int vlr1=Integer.parseInt(inteiro.getText().trim());
String numerohex=Integer.toHexString(vlr1);
resultado.setText(numerohex);
Ok… desta forma consigo a representação em hexa do valor inteiro que eu tenho. Mas quando for enviar isto via socket mando cada byte do String da representação do valor em hexa? O equipamento espera algo como isto:
00 00 00 2C 01 01 2F 00 00 04 F4 2B 34 34 32 32
33 35 38 37 39 38 37 00 00 00 00 00 00 00 00 23
00 F0 00 00 00 22 00 00 FF 00 00 00 00 00 00 00
Os 4 primeiros bytes 00 00 00 2C (44 em decimal) definem o tamanho da mensagem. Quando monto a mensagem na aplicação tenho o 44 e não sei como mandar para o equipamento o 00 00 00 2C. Grato.
Deixa ver se eu entendi… vc tem uma aplicação que conversa com um equipamento (não é outra aplicação), certo ?
Não saberia te dizer exatamente, mas creio que seja uma aplicação embutida dentro do equipamento. A comunicação é feita via socket. Ele recebe o cabeçalho em hexa, os demais dados acho que podem se em ASCII.
Acabei resolvendo o problema, caso alguém se interesse como referência…
public static byte[] intToHexArray(int value) {
byte b0 = (byte) value;
byte b1 = (byte)(value >> 8);
byte b2 = (byte)(value >> 16);
byte b3 = (byte)(value >> 24);
return new byte[] {b3, b2, b1, b0};
}
E eu achando que só iria precisar destes operadores para certificação 