Very Hard Delight Life

内容はLinux, HW, プログラミング, HaFaBra.

Hexadecimal => Binary with leading zero

bcコマンドを用いて二進数へ変換した場合、リーディングゼロが付かない。 一方で、二リーディングゼロを持つ二進数が欲しい場面はディジタル回路のテストベンチ作成において多い。

入力をfoo.hex、出力をfoo.binとする。 foo.hexには各行に16進数でデータが記載されているとし、各行は同じ桁数とする。

HEX_LEN=`head -n 1 foo.hex | tr -d '\n'` | wc -l`
for l in `cat foo.hex`; do
  echo "ibase=16;obase=2;${l}" | bc | awk '{printf "%0${HEX_LEN}s", $0'
done