Bash에 두 개의 256비트 16진수 숫자를 추가하시겠습니까?

Bash에 두 개의 256비트 16진수 숫자를 추가하시겠습니까?

Bash 명령을 사용하여 16진수 영숫자 데이터를 추가해야 합니다. 이것은 숫자에 적용됩니다.

total=$(( 55 + 60 )) 

그러나 영숫자는 아닙니다. 영숫자 데이터를 추가하기 위한 간단한 bash 명령이 있습니까? 다음과 같이 큰 영숫자 데이터를 추가합니다.

436389bdc34dd718c7959db8d6df16967f2b9895e515da45fb09136183a7a9e2
 +
1f0c45bbe9bc71a862f0d9672d056d2d741719a2b2d46ea6b269931d0b57674f 

답변1

모든 POSIX 쉘과 마찬가지로 bash16진수 추가가 지원됩니다.

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%

관련 정보