Enquanto bash
, como todos os shells POSIX suportam a adição de números hexadecimais com
printf '%x\n' "$((0xfff + 0xaaa))"
(consulte: Como adicionar dois números hexadecimais em um script bash )
Isso é limitado a, no máximo, 64 bits inteiros.
Para números tão grandes, você pode usar bc
:
{
echo obase=16
echo ibase=16
echo 436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2 +\
1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f |
LC_ALL=C tr a-f A-F
} | BC_LINE_LENGTH=0 bc
BC_LINE_LENGTH=0
evita a quebra da linha com a implementação GNU de bc
. Com outras implementações, você pode canalizar para sed 'N;s/\\n//'
.
Ou GNU awk
com -M
(se construído com suporte aritmético de precisão arbitrária):
$ gawk -M 'BEGIN{printf "%x\n", \
0x436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2 + \
0x1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f}'
626fcf79ad0a48c12a86772003e483c3f342b23897ea48ecad72a67e8eff1131%