Bytes como hexadecimal no console

BYTES como HEXADECIMAL no CONSOLE

Olá quem manja de Java.

Preciso saber se alguém sabe como exibir um Array de Bytes no console como Hexadecimal.

Estou recebendo um Array de bytes de uma porta serial conectada a outro computador,
envio 0x01, 0x02, 0x03 de outro computador
Pego os valores da porta serial por um InputStream e aloco em um byte[];

byte[] meusBytes = new byte[20];

while(input.avaliable())
input.read(meusBytes);

System.out.println(???);

Agora queria que a saida do console fosse: “0x01 0x02 0x03” ou “01 02 03”

ja tentei várias maneiras de exibi-la, mas nunca exibe no formato correto,

preferiria que me respondessem algo que saibam que funciona e não coisas vagas como “tenta isso” ou “tenta aquilo” pq ja tentei varias formas, precisaria de algo consistente. Alguém tem alguma dica?

Já coloquei no fórum, redes sociais e nas igrejas mais próximas, alguém me dá uma força aeow! . Só falta isso pra terminar algo que está em atraso, vlww.

byte[] bytes = ...;
for (int i = 0; i < bytes.length; ++i) {
    System.out.printf ("0x%02X ", bytes[i] & 0xFF);
}

Eu prefiro usar este método (printHex), que foi escrito pelo Thingol há uns 6 anos atrás:

Outra opção é essa função implementada por mim:

Ela é extremamente otimizada para essa tarefa.

Funciona com ByteBuffers, mas deve ser fácil adapta-la para funcionar também com arrays (provavelmente o jeito mais fácil é jogar um array dentro de um ByteBuffer e encaminhar para a função).