読者です 読者をやめる 読者になる 読者になる

Very Hard Delight Life

日々の記録を短めに記述。

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