O código bash
a seguir está configurado para funcionar com o byte sendo representado em binário . No entanto, você pode facilmente alterá-lo para lidar com ocatal , decimal ou hex simplesmente alterando o valor radix r
de 2
a 8
, 10
ou 16
respectivamente e definindo b=
de acordo.
r=2; b=01111110
printf -vo '\%o' "$(($r#$b))"; </dev/zero tr '~~~~
' "$o"
EDIT - Ele manipula o intervalo completo de valores de bytes: hex 00 - FF (quando eu escrevi 00-7F abaixo, eu estava considerando apenas caracteres UTF-8 de byte único).
Se, por exemplo, você quiser apenas 4 bytes (caracteres no intervalo hexagonal 00-7F somente para 'ASCII' do UTF-8) , é possível canalizá-lo em cabeça : ... | head -c4
Saída (4 caracteres):
0000000: 10000000 10000000 10000000 10000000 ....
Para ver a saída no formato de 8 bits, canalize-a para xxd
(ou qualquer outro dump de byte de 1 e 0 *):
por exemplo. b=10000000
e canalização para: ... | head -c4 | xxd -b
r=2; b=01111110
printf -vo '\%o' "$(($r#$b))"; </dev/zero tr '~~~~
' "$o"