Bash 명령을 사용하여 16진수 영숫자 데이터를 추가해야 합니다. 이것은 숫자에 적용됩니다.
total=$(( 55 + 60 ))
그러나 영숫자는 아닙니다. 영숫자 데이터를 추가하기 위한 간단한 bash 명령이 있습니까? 다음과 같이 큰 영숫자 데이터를 추가합니다.
436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2
+
1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f
답변1
모든 POSIX 쉘과 마찬가지로 bash
16진수 추가가 지원됩니다.
printf '%x\n' "$((0xfff + 0xaaa))"
(바라보다:Bash 스크립트에 두 개의 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%