Учитывая вашу строку в кодировке base64, вы можете назначить каждый байт массиву.
Либо вы назначаете массив с шестнадцатеричными значениями:
arr1=($(base64 -d <<< "FxEYEhkTGhQbFRwWIQcBCAIJAwoECwUMBjEHAQgCCQMKBAsFDAYAgICAgICAgICAgICAAICAgICAgICAgICAgAu003du003d" | hexdump -v -e '/1 "0x%02x " '))
printf "%s" "${arr1[0]}"
0x17
printf "%d" "${arr1[0]}"
23
printf "%x" "${arr1[0]}"
17
Либо вы назначаете свой массив с десятичными значениями:
arr2=($(base64 -d <<< "FxEYEhkTGhQbFRwWIQcBCAIJAwoECwUMBjEHAQgCCQMKBAsFDAYAgICAgICAgICAgICAAICAgICAgICAgICAgAu003du003d" | hexdump -v -e '/1 "%02d " '))
$ printf "%s" "${arr2[0]}"
23
$ printf "%d" "${arr2[0]}"
23
$ printf "%x" "${arr2[0]}"
17
Единственное отличие - формат hexdump
.
Обратите внимание, что вы не можете иметь дело с двоичным файлом напрямую с переменной, так как оболочка откажется принять его.
Например, при использовании bash попытка var="$(echo -e "\x00")"
приведет к ошибке bash: warning: command substitution: ignored null byte in input