目次
前
次
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)
目次
前
次