Nếu bạn có xxd
, điều đó thật dễ dàng: nó có thể chuyển đổi sang và từ thập lục phân.
echo '0006303030304e43' | xxd -r -p | nc -l localhost 8181
Tôi không nghĩ có một cách hợp lý (và hợp lý nhanh chóng) để chuyển đổi hệ thập lục phân thành nhị phân chỉ bằng các công cụ POSIX. Nó có thể được thực hiện khá dễ dàng trong Perl. Kịch bản sau đây chuyển đổi thập lục phân thành nhị phân, bỏ qua mọi ký tự đầu vào không phải là chữ số thập lục phân. Nó phàn nàn nếu một dòng đầu vào chứa một số lẻ các chữ số thập lục phân.
#!/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"; }
Nếu bạn thực sự cần phải sử dụng POSIX (ví dụ: trên thiết bị nhúng), tôi khuyên bạn nên sử dụng Base64 thay vì thập lục phân. Bạn có thể sử dụng uudecode để giải mã Base64. Đầu vào phải có định dạng tiêu đề và dòng kết thúc được tạo bởi uuencode , nó không thể là Base64 thô.
uudecode <<EOF | nc -l localhost 8181
begin-base64 644 -
AAYwMDAwTkM=
====
EOF