目次

2進16進変換(AWK)

 手元に関数電卓がない場合、2進数を16進数に変換するのが
 面倒なことがあります。4桁であれば、覚えているので造作
 ないことですが、12桁から20桁くらいになると4桁ごと
 に区切って、変換するのが大変になります。

 2進数を構成する1と0の組み合わせの間に、次のように
 スペースを入れて、スクリプトで変換します。

1 1 => 0x03
1 1 1 => 0x07

 AWKは、1行をFS(Field Separater)で区切るので、FSを
 デフォルトのスペースのまま利用します。

 フィールドの個数は、組込み変数NFに格納されているので
 2進を16進に変換するスクリプトは、次のようになります。

{
  result = 0 
  for ( i = 1 ; i < NF+1 ; i++ ) {
    result = result * 2 + $i
  }
  printf("%s => 0x%x \n",$0,result)
}

 上のスクリプトを、次のテキストファイルに適用してみます。

1 0 0 1
1 1

 実行結果は、以下。



 2進10進変換、2進8進変換では、表示を
 次のように変えます。

 2進10進変換
   printf("%s => %d \n",$0,result)

 2進8進変換
   printf("%s => 0%o \n",$0,result)


目次

inserted by FC2 system