Se você tiver xxd
, é fácil: pode converter de e para hexadecimal.
echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
Eu não acho que exista uma maneira razoável (e razoavelmente rápida) de converter hexadecimal em binário usando apenas ferramentas POSIX. Isso pode ser feito facilmente no Perl. O script a seguir converte hexadecimal em binário, ignorando qualquer caractere de entrada que não seja um dígito hexadecimal. Ele reclama se uma linha de entrada contém um número ímpar de dígitos hexadecimais.
#!/usr/bin/env perl
$^W = 1;
$c = undef;
while (<>) {
tr/0-9A-Fa-f//cd;
if (defined $c) { warn "Consuming $c"; $_ = $c . $_; $c = undef; }
if (length($_) & 1) { s/(.)$//; $c = $1; }
print pack "H*", $_;
}
if (!eof) { die "$!"; }
if (defined $c) { warn "Odd number of hexadecimal digits"; }
Se você realmente precisa seguir o POSIX (por exemplo, em um dispositivo incorporado), recomendo usar o Base64 em vez do hexadecimal. Você pode usar o uudecode para decodificar o Base64. A entrada deve ter o formato do cabeçalho e a linha final produzidos pelo uuencode , não pode ser Base64 bruto.
uudecode <<EOF | nc -l localhost 8181
begin-base64 644 -
AAYwMDAwTkM=
====
EOF