2

A41EB86E184207262C12F66E7C48057732 文字の 16 進文字列 (例: ) をバイナリに変換しようとしています。私は使用しています:

echo "ibase=16; obase=2; $line" | bc

しかし、不要な\中間が含まれているため、結果に対してビット操作を実行できません。

私が得た出力例は次のとおりです。

10100100000111101011100001101110000110000100001000000111001001100010\
110000010010111101100110111001111100010010000000010101110111

\最初の行の最後にある に注意してください。

それを避けるために私は何ができますか?

4

1 に答える 1

4

十分bcにモダンな がある場合は、ゼロに設定BC_LINE_LENGTHしてラッピングを無効にすることができます。

pax> echo "ibase=16;
...>       obase=2;
...>       A41EB86E184207262C12F66E7C480577" | BC_LINE_LENGTH=0 bc

これにより、番号が 1 行に出力されます。

1010010000011110101110000110111000011000010000100000011100100110001011000001...

私はそれをデフォルトにしたいので、私はそれを私の中に持っている傾向があります.profile(または.bashrc、頭のてっぺんから覚えていません):

export BC_LINE_LENGTH=0

マンページから:

BC_LINE_LENGTH:これは、数値の出力行の文字数を指定する整数である必要があります。これには、長い数字のバックスラッシュと改行文字が含まれます。拡張として、ゼロの値は複数行機能を無効にします。この変数に 3 未満のその他の値を指定すると、行の長さが 70 に設定されます。

「0 は無効を意味する」拡張機能をサポートしていない場合bcは、非常に高く設定することもできます。

export BC_LINE_LENGTH=9999

bcまったく許可されないという点で「問題がある」場合は、改行やバックスラッシュを取り除くためにBC_LINE_LENGTH使用するなど、出力の後処理に戻る必要がある場合があります。tr

pax> echo "ibase=16;obase=2;A41EB86E184207262C12F66E7C480577" | bc | tr -d '\\\n'
于 2012-09-28T03:28:32.090 に答える