bc スペースで区切られたニブロバイナリ出力

bc スペースで区切られたニブロバイナリ出力

私はかなり多くのビットシフト操作を含むコードをデバッグしています。

これが私が使用するものです:

$ echo 'obase=2;598980975283696640' | bc
100001010000000000100000011000000011000000000111010000000000

スペースで区切られたニブル出力を取得する簡単な方法はありますか?例えば

1000 0101 0000 0000 0010 0000 0110 0000 0011 0000 0000 0111 0100 0000 0000

ご回答ありがとうございます!

編集:返信ありがとうございます!しかし、

別の番号262148で試してみました。

しなければならない:

100 0000 0000 0000 0100

しかし、それは:

1000 0000 0000 0000 100

正しい結果を得るには、スクリプトが文字列を逆に検索する必要があると思いますか?

ベストアンサー1

echo 'obase=2;598123123980975281233696640' | BC_LINE_LENGTH=0 bc |
  rev | fold -w4 | paste -sd ' ' - | rev

または:

echo 'obase=2;598123123980975281233696640' | BC_LINE_LENGTH=0 bc | sed ':1
  s/\(.*[01]\)\([01]\{4\}\)/\1 \2/;t1'

BC_LINE_LENGTH=0bc70列に数字の改行を停止することです。しかし、これはGNUに固有のものです。rev標準コマンドではありませんが、一般的です。

おすすめ記事