Veja um exemplo de como você pode usar dc
to P
rint o valor (UCHAR_MAX+1)
de um byte:
printf %dP 104 101 121 32 116 104 101 114 101 10 |dc
... que imprime ...
hey there
A base padrão i
nput é 10 - decimal - mas você pode configurá-la com $val i
onde $val
é qualquer número entre 2 e 16 (note que se a entrada atual não for 10 você Terá que usar o valor da base atual para 10 para recuperá-lo - senão você sempre pode fazer Ai
) .
Aqui está um exemplo mais complicado:
LC_ALL=C man man 2>/dev/null |
od -v -An -t x1 |
tr -s '[:space:]' P | {
echo 16i0
tr '[:lower:]' '[:upper:]'
} | dc | head
... que traduz a saída de man man
em hexadecimal e novamente em in-stream e imprime:
MAN(1) Manual pager utils MAN(1)
NAME
man - an interface to the on-line reference manuals
SYNOPSIS
man [-C file] [-d] [-D] [--warnings[=warnings]] [-R
encoding] [-L locale] [-m system[,...]] [-M path]
Assegure-se de que todos os seus [:hexdigit:]
s alfabéticos sejam maiúsculos e coloquem em sanduíche um P
entre cada par, em seguida canalize-o em dc
.