반달가면 이글루에서 백업 - bahndal.egloos.com/503597
수 계산에 유용한 bc 명령을 이용하면 10진수를 2진수나 16진수로, 또는 그 반대로 변환할 수 있다. bc 명령에 대한 내용은 이전 게시물을 참고하자. 여기로
일단 아래의 예시를 보자.
# 10진수를 2진수로 변환 (obase 변경)
echo "obase=2; 27" | bc
11011
bc에는 출력값과 입력값의 기수(base)를 설정하는 변수가 있는데, 각각 obase와 ibase이다. (기본적으로 10진수를 사용하므로 기본값은 둘 다 10이다.) obase 값을 2로 설정하면 출력값이 2진수로 표현된다. 반대로 2진수를 10진수로 변환하려면 ibase 값을 2로 설정하면 되겠다.
# 2진수를 10진수로 변환 (ibase 설정)
echo "ibase=2; 11011" | bc
27
# 2진수를 16진수로 변환
# obase 설정 이후 ibase 설정
echo "obase=16; ibase=2; 11011" | bc
1B
obase와 ibase를 둘 다 설정할 경우 obase 설정이 먼저 나와야 한다. 왜 그러냐 하면, 예를 들어 ibase를 먼저 2로 설정하면 그 다음에 obase를 설정할 때 입력할 값이 먼저 설정된 ibase 기준(즉 2진법)으로 되어야 하기 때문이다. 2진수를 16진수로 변환할 때 ibase를 먼저 설정하는 경우는 아래와 같이 좀 복잡해진다.
# 2진수를 16진수로 변환
# ibase 설정을 먼저 하는 경우
echo "ibase=2; obase=10000; 11011" | bc
1B
입력값의 기수를 정하는 ibase가 먼저 2진수로 설정되었기 때문에, obase를 16진수로 설정하려면 16을 2진수로 변환한 10000을 obase 값으로 설정해 주어야 한다. 복잡하다.
'bash script' 카테고리의 다른 글
[bash: find, mkdir] 디렉토리 구조 복사하기 (0) | 2021.03.30 |
---|---|
[bash: date] 파일을 마지막으로 수정한 날짜/시간 확인 (0) | 2021.03.03 |
[bash: seq] seq 명령의 유용한 옵션들 (0) | 2021.02.09 |
[bash: grep] 특정 문자열이 포함된 파일의 이름 찾기 (0) | 2021.01.28 |
[bash: sleep] 1초 미만으로 쉬기 (0) | 2021.01.14 |