16進数を2進数に変換すると、予期しないバックスラッシュが発生します。

16進数を2進数に変換すると、予期しないバックスラッシュが発生します。

16進行をバイナリに変換しようとしていますが、bash出力にバックスラッシュが含まれています。誰かが理由を説明できますか?

入力する:

for i in 3D3D516343746D4D6D6C315669563362; do BIN=$(echo "ibase=16; obase=2; $i" | bc); echo $BIN; done

出力:

11110100111101010100010110001101000011011101000110110101001101011011\ 0101101100001100010101011001101001010101100011001101100010

ベストアンサー1

POSIX実装はbcバックスラッシュを使用して出力行を最大70文字に分割します。行連続文字

GNUバージョンがある場合は、bc環境変数を使用してこの動作をオーバーライドできますBC_LINE_LENGTH

$ printf 'ibase=16; obase=2; %s\n' 3D3D516343746D4D6D6C315669563362 | BC_LINE_LENGTH=0 bc
111101001111010101000101100011010000110111010001101101010011010110110101101100001100010101011001101001010101100011001101100010

からinfo bc

'BC_LINE_LENGTH'
     This should be an integer specifying the number of characters in an
     output line for numbers.  This includes the backslash and newline
     characters for long numbers.  As an extension, the value of zero
     disables the multi-line feature.  Any other value of this variable
     that is less than 3 sets the line length to 70.

おすすめ記事