Jika sudah xxd
, itu mudah: dapat dikonversi ke dan dari heksadesimal.
echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
Saya tidak berpikir ada cara yang masuk akal (dan cukup cepat) untuk mengkonversi heksadesimal menjadi biner hanya menggunakan alat POSIX. Ini bisa dilakukan dengan cukup mudah di Perl. Skrip berikut mengonversi heksadesimal menjadi biner, mengabaikan karakter input apa pun yang bukan digit heksadesimal. Ia mengeluh jika saluran input berisi angka ganjil heksadesimal.
#!/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"; }
Jika Anda benar-benar harus tetap berpegang pada POSIX (mis. Pada perangkat yang disematkan), saya sarankan menggunakan Base64 daripada hexadecimal. Anda dapat menggunakan uudecode untuk mendekode Base64. Input harus memiliki format tajuk dan garis akhir yang dihasilkan oleh uuencode , tidak boleh berupa Base64 mentah.
uudecode <<EOF | nc -l localhost 8181
begin-base64 644 -
AAYwMDAwTkM=
====
EOF