2016-02-10 4 views
4

Я хочу преобразовать десятичное число (номер индекса цикла) в сценарий bash в шестнадцатеричный для использования другой командой. Что-то вроде:Преобразование десятичного в шестнадцатеричное в сценарии bash

for ((i=1; i<=100; i++)) 
do 

    a=convert-to-decimal($i) 
    echo "$a" 

done 

Где должен быть шестнадцатеричным с четырьмя цифрами и шестигранного идентификатором. Например, если значение я является , значение должен быть 0x0064. Как это сделать?

+2

Возможного дубликат [Преобразование десятичного в шестнадцатеричный в сценарии оболочки UNIX] (http://stackoverflow.com/questions/378829/convert-decimal-to-hexadecimal -in-unix-shell-script) – Tgsmith61591

+1

'printf"% # 06x "100' →' 0x0064' – Biffen

ответ

2

Вы можете использовать printf.

$ printf "0x%04x" 100 
0x0064 

В вашем примере вы, вероятно, используете a="$(printf '0x%04x' $i)".

+2

Или 'printf -va '0x% 04x' $ i' вместо замены процесса. –

+0

@BenjaminW. Вы, конечно, имеете в виду подмену команды. Но ваша точка зрения верна. –

+0

@gniourf_gniourf Я абсолютно делаю! –

1

Это то, что вы ищете

для I в seq 1 100; сделать Printf «% х \ п» $ я сделал

+0

Я не уверен, почему вы откатили редактирование ... –

Смежные вопросы