バリケンのRuby日記 RSSフィード

2007-10-05

[] 10進数と16進数の相互変換  10進数と16進数の相互変換 - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  10進数と16進数の相互変換 - バリケンのRuby日記  10進数と16進数の相互変換 - バリケンのRuby日記 のブックマークコメント

バイナリデータで遊ぶときには、10進数と16進数を相互に変換して色々と調べてみたりしたくなることがあるよね。

そういうときは、irbを使うと簡単に調べられるよ。たとえば16進数の「c3」が10進数でいくつになるのかを知りたければ、

$ irb
irb(main):001:0> 0xc3
=> 195
irb(main):002:0> exit
$

のような感じにするよ。逆に10進数の195が16進数でいくつになるのかは、

$ irb
irb(main):001:0> 195.to_s(16)
=> "c3"
irb(main):002:0> exit
$

とすればいいよ。

また、たとえば「c3 90 90 90」を32ビット符号付きintで表したときにいくつになるのかを調べるには、

$ irb
irb(main):001:0> 0xc3909090 - 0xffffffff - 1
=> -1013935984
irb(main):002:0> exit
$

とすればいいよね。

もちろん16進数だけじゃなくて、たとえば2進数と10進数でも似たような感じで相互に変換できるよ。

$ irb
irb(main):001:0> 0b11111111
=> 255
irb(main):002:0> 0xff.to_s(2)
=> "11111111"
irb(main):003:0> exit
$

こんな感じでirb関数電卓っぽく使えば、Rubyが使える人ならけっこう便利なんじゃないかな。