Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

シェルで2進数、8進数、10進数、16進数変換@bash

      2013/07/15

シェルスクリプトで2進数や16進数を扱う方法です。

まずは、bc コマンドを使ったやり方。16進数”A”を10進数に変換しています。
※Aは大文字にする必要があります。

# echo "obase=10; ibase=16; A" | bc
10

簡単ですね。obaseが出力形式、ibaseが入力の形式で、デフォルトは10なので、obaseは省略することができるのですが、私の環境(Fedora17)だとobaseとibaseの書き順を入れ替えたら動きませんでした。

# echo "ibase=16; obase=10; A" | bc
A

16進数を2進数に変換する時も同様に

# echo "obase=2; ibase=16; F" | bc
1111

こちらはobaseとibaseを入れ替えても動きました。

# echo "ibase=16; obase=2; F" | bc
1111

 

次は printf コマンドを使ったやり方。16進数”A”を10進数に変換。0xを付けて16進であることを指示し、%d が10進数です。Cのprintfと同じですね。

# printf '%d\n' 0xA
10

10進数”10″を16進数に変換。printfは小文字で出てくるようです。%xが16進数です。

# printf '%x\n' 10
a

同様に%oは8進数です。

# printf '%o\n' 8
10

8進数から10進数。8進数を入力する場合は、頭に0をつけます。

printf '%d\n' 010
8

printfで2進数はできなさそうです。(たぶん)

 

シェルの機能でこんな変換もできます。(たぶんbashの機能?)
10進への変換しかできなさそう。

echo $((0xF))
15

 - IT技術, プログラミング ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
Windows7 – 非ページ プール割り当ての制限に達したため、サーバーはシステムの非ページ プールから割り当てることができませんでした

Windows7 でファイルの共有(ファイルサーバー)をしていると以下のエラーが …

no image
Apache 2.0 + OpenSSL

OpenSSLは SSLv2/SSLv3/TLSv1 をサポートしているオープン …

no image
vardiaの地上デジタルが不安定なときは@RD-S601

東芝のVardiaでは、地上デジタルの電波が強すぎて、逆に画面が不安定になること …

no image
cygwin ck のダブルクリック選択文字列の範囲を変更する

Cygwin 用のターミナルソフトウェア cygwin ck  を便利に使わせて …

no image
デフォルトサーバ証明書の更新 @ CentOS 4

インストール時に自動的にインストールされるApacheのSSLの証明書を更新する …

no image
MP3のジャケット自動取得と埋め込み

今までアルバムのジャケットにそれほど興味はなく、MP3プレーヤにその機能があって …

no image
b-mobileのプロキシ

b-mobileのプロキシって三つあるんですね。 marion 低圧縮 mari …

no image
cygwinでWindowsのコマンド(ipconfig等)の文字化けを解消する

WindowsのコマンドをCygwin上で実行すると文字化けしてしまいます。これ …

no image
lsの色を変更する@Cygwin

lsコマンドは、ディレクトリやファイルの種類によって、表示に色をつけることができ …

no image
sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmo …