Сделайте tr
перед sed
и добавьте sed
, добавьте ibase=16;
перед тем, как передать все в bc
:
dec_value=$(echo dede0a01 | tr '[a-z]' '[A-Z]' | sed 's,\(..\)\(..\)\(..\)\(..\),ibase=16;\4\3\2\1,g' | bc)
Если вы используете Bash, ksh илиzsh, вам не нужны tr
и bc
:
(( dec_value = 16#$(echo dede0a01 | sed 's,\(..\)\(..\)\(..\)\(..\),\4\3\2\1,g') ))
или без echo
и sed
, также:
hex=dede0a01
(( dec_value = 16#${hex:6:2}${hex:4:2}${hex:2:2}${hex:0:2} ))