1

bash数値を1101のようなビットフィールド文字列に変換するための最も簡潔な方法は何でしょうか?

事実上、私は反対のことをしようとしています

echo $[2#1101]

理由:「0011010110」のような完全な文字列の形式でビットフィールドを取得するプログラムにパラメータを送信する必要がありますが、多くの場合、次のように1つまたは数ビットのみを有効にする必要があります。

SUPPRESSbits=$[1<<16] runscript.sh  # OR
SUPPRESSbits=$[1<<3 + 1<<9] runscript.sh  # much more readable when I know what bits 3 and 9 toggle in the program

次に、runscript.shは、そのenvでSUPPRESSbits=65536ではなくSUPPRESSbits="1000000000000000"を参照し、解析エラーで終了します。

4

2 に答える 2

6

簡単な方法:

$ dc <<<2o123p
1111011

$ bc <<<'obase=2; 123'
1111011
于 2012-04-18T15:21:38.930 に答える
1

bashについては疑問ですが、いつでもperlを使用できます。

a=123; b=$(perl -e 'printf "%b", "'$a'"'); echo $b
1111011
于 2012-04-18T15:19:16.037 に答える