UNIX 쉘 스크립트에서 10 진수를 16 진수로 변환하기 위해 무엇을 사용할 수 있습니까? 나는 od가 트릭을 할 것이라고 생각했지만 ASCII 숫자 표현을 제공하고 있다는 것을 깨닫지 못합니다.
printf? 심한! 지금은 사용하고 있지만 다른 것은 무엇입니까?
답변
echo "obase=16; 34" | bc
정수 파일 전체를 한 줄에 하나씩 필터링하려면 :
( echo "obase=16" ; cat file_of_integers ) | bc
답변
시도 printf(1)
했습니까?
printf "%x\n" 34
22
모든 셸에 내장 함수를 사용하는 방법이있을 수 있지만 이식성이 떨어집니다. POSIX sh 사양을 확인하여 이러한 기능이 있는지 확인하지 않았습니다.
답변
16 진수에서 10 진수로 :
$ echo $((0xfee10000))
4276158464
10 진수에서 16 진수로 :
$ printf '%x\n' 26
1a
답변
bash-4.2$ printf '%x\n' 4294967295
ffffffff
bash-4.2$ printf -v hex '%x' 4294967295
bash-4.2$ echo $hex
ffffffff
답변
미안해, 이거 해봐 …
#!/bin/bash
:
declare -r HEX_DIGITS="0123456789ABCDEF"
dec_value=$1
hex_value=""
until [ $dec_value == 0 ]; do
rem_value=$((dec_value % 16))
dec_value=$((dec_value / 16))
hex_digit=${HEX_DIGITS:$rem_value:1}
hex_value="${hex_digit}${hex_value}"
done
echo -e "${hex_value}"
예:
$ ./dtoh 1024
400
답변
시험:
printf "%X\n" ${MY_NUMBER}
답변
에서 zsh
당신이 이런 종류의 작업을 수행 할 수 있습니다 :
% typeset -i 16 y
% print $(( [#8] x = 32, y = 32 ))
8#40
% print $x $y
8#40 16#20
% setopt c_bases
% print $y
0x20
zsh
산술 평가에 대한 문서 페이지 에서 가져온 예 입니다.
나는 Bash가 비슷한 기능을 가지고 있다고 생각합니다.
