Телеметрия движения мыши

Если у вас есть переменная с шестнадцатеричным числом, например 'FF00', и вы хотите преобразовать его в десятичное, то вы можете использовать bc:

hex='FF00'
dec=$( printf 'ibase=16; %s\n' "$hex" | bc )

Здесь bc выведет 65280, и оболочка сохранит его как строку в переменной dec.

Установка ibase=16 сообщает bc, что входное основание равно 16 (т.е. шестнадцатеричное). Она также имеет переменную obase (выходное основание), которую можно использовать вместе с ibase для произвольных преобразований.

Если у вас есть массив шестнадцатеричных значений:

colors=( $(xtermcontrol --get-bg | sed -n $regex) )
typeset -a base10_colors
for hex in "${colors[@]}"; do
  base10_colors+=( "$( printf 'ibase=16; %s\n' "$hex" | bc )" )
done

Или, с помощью синтаксиса zsh:

colors=( $(xtermcontrol --get-bg | sed -n $regex) )
typeset -a base10_colors
for hex in "${colors[@]}"; do
  base10_colors+=( $((16#$hex)) )
done
1
31.10.2017, 00:23
0 ответов

Теги

Похожие вопросы