Eğer varsa xxd
, bu kolay: onaltılık ve onaltılık dönüştürebilirsiniz.
echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
Onaltılıyı sadece POSIX araçlarını kullanarak ikili dosyaya dönüştürmenin makul (ve oldukça hızlı) bir yolu olduğunu sanmıyorum. Perl'de oldukça kolay yapılabilir. Aşağıdaki komut dosyası onaltılık sayıyı ikiliye dönüştürür, onaltılık basamak olmayan herhangi bir giriş karakterini yok sayar. Bir giriş satırında tek sayıda onaltılık basamak olup olmadığını şikayet eder.
#!/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"; }
Gerçekten POSIX'e (örneğin gömülü bir cihaza) bağlı kalmanız gerekiyorsa , onaltılık yerine Base64 kullanmanızı öneririm . Base64 kodunu çözmek için uudecode kullanabilirsiniz . Girdi, uuencode tarafından üretilen başlık biçimine ve bitiş satırına sahip olmalıdır, ham Base64 olamaz.
uudecode <<EOF | nc -l localhost 8181
begin-base64 644 -
AAYwMDAwTkM=
====
EOF