![Bash에 두 개의 256비트 16진수 숫자를 추가하시겠습니까?](https://linux55.com/image/130222/Bash%EC%97%90%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20256%EB%B9%84%ED%8A%B8%2016%EC%A7%84%EC%88%98%20%EC%88%AB%EC%9E%90%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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%