Bom dia PessoALL !
Preciso enviar uma informação/string para um equipamento/impressora em formato hexadecimal.
Já tentei transformar o string em array de bytes e depois enviar mas o equipamento / impressora não interpreta corretamente.
Mas não estou conseguindo transformar cada parte do string em 01 byte para carregar no array de bytes para enviar.
Como posso fazer ? Poderiam me ajudar ?
Desde já agradeço pela ajuda e fico aguardando as respostas / sugestões.
Atenciosamente,
Wagner
// classe utilitaria para converter byte em String e vice-versa
public final class HexaUtil {
private static final char[] HEXAS = "0123456789ABCDEF".toCharArray();
// construtor privado, nao faz sentido instanciar esta classe
private HexaUtil() {}
// converte um byte para uma String hexadecimal
public static final String toHexa(final byte bits) {
final int lo = bits & 0xF;
final int hi = bits >>> 4 & 0xF;
return String.valueOf(HEXAS[hi]) + String.valueOf(HEXAS[lo]);
}
// converte um array de byte para uma String hexadecimal
public static final String toHexaString(final byte[] bytes) {
final StringBuffer buffer = new StringBuffer();
final int length = bytes.length;
for (int i = 0; i < length; i++) {
buffer.append(toHexa(bytes[i]));
}
return buffer.toString();
}
// converte uma String hexadecimal para um byte
public static final byte toByte(final String hexa) {
return (byte) Short.parseShort(hexa.toUpperCase(), 16);
}
// converte uma String hexadecimal para um array de byte
public static final byte[] toByteArray(final String hexaString) {
final char[] chars = hexaString.toCharArray();
final int length = chars.length;
final byte[] byteArray = new byte[length / 2];
String hexa = null;
for (int i = 0, j = 0; i < length; i += 2, j++) {
hexa = new String(new char[] {chars[i], chars[i + 1]});
byteArray[j] = toByte(hexa);
}
return byteArray;
}
}