Bashコマンドを使用して16進英数字データを追加する必要があります。これは数値に適用されます。
total=$(( 55 + 60 ))
しかし、英数字ではありません。英数字データを追加するための単純なbashコマンドはありますか?次のように大きな英数字データを追加します。
436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2
+
1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f
答え1
すべてのPOSIXシェルと同様に、bash
16進数の追加がサポートされています。
printf '%x\n' "$((0xfff + 0xaaa))"
(望むより:Bashスクリプトに2つの16進数を追加する方法)
最大64ビット整数に制限されます。
このように大きな数字の場合は、次のものを使用できます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
改行文字のGNU実装は防止されていますbc
。他の実装では、パイプを代わりに使用できますsed 'N;s/\\\n//'
。
またはGNU awk
(-M
任意精度算術サポートで構築されている場合):
$ gawk -M 'BEGIN{printf "%x\n", \
0x436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2 + \
0x1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f}'
626fcf79ad0a48c12a86772003e483c3f342b23897ea48ecad72a67e8eff1131%