Enviando valores Hexa

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 :grin: