簡単に:

簡単に:

私はawkテキストファイルを解析するために使用します。テキストファイルには、次の4バイトのデータフィールドがあります。

11110000  10100000  10110000  10010000

このフィールドを読み、2進数から16進数に変換したいと思います。現在私は10進数にprintf %xなり、1111000016進数になります。これが示す値ではありませ1111000ん。0xA987600xF0

私のコードはシンプルで、BASHとLinuxを初めて使用します。

awk'{printf(%x %x %x %x, $1, $2, $3, $4)};

文字列フィールドをバイナリとして保存してから16進数に変換するには? "bc <<<"obase=16;ibase=2; を使用して端末から 16 進数を取得できます。 $変数""。このスクリプトを作成しようとすると構文エラーが発生します。

ベストアンサー1

awk10進数、8進数、16進数のみサポートされ、2進数はサポートされていません。あなたが使用できるperl

perl -lane 'BEGIN{$, = " "} print unpack "(H2)*", pack("(B8)4", @F)'

dcGNUの場合tac(一部のシステムも参照tail -r):

{ echo 16o2i; cat; echo f; } < file.txt | dc | tac

使用(構文エラーがbc// /の最新バージョンではなく、シェルで使用されている演算子に関連していると仮定)<<< zshzshbashksh93mkshyash

{ echo 'obase=16; ibase=2'; tr -cs 01 '[\n*]'; } < file.txt | bc

おすすめ記事