From: Akinori MUSHA Date: 2001-09-15T23:52:44+09:00 Subject: [ruby-list:31469] Re: お知恵を拝借 解1) 元の意図を汲むなら: class Integer def to_x str = '' x = self while x > 0 str << %w(0 1 2 3 4 5 6 7 8 9 a b c d e f)[x & 0xf] x >>= 4 end '0x' + ('00' + str)[-2..-1] end end puts ?\C-a.to_x 解2) 最適解は: puts '0x%02x' % ?\C-a でしょうか。(cf. printf(), sprintf(), format(), String#%)  なお、アルゴリズムはおいておくとして、一時的にしか使わない 変数をインスタンス変数 (@var) にするのはちょっと変です。  また、二桁固定で 0x 付き、という特殊なものを Integer に追加 するのは感心しません。今回の場合はたまたま汎用的でぴったりの 機能が Ruby にあったわけですが、なかった場合も Integer に追加 するのではなく、プライベートメソッドにするか、それを頻繁に使う クラスのクラスメソッドにするべきだと思います。 -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "Freeze this moment a little bit longer, make each impression a little bit stronger.. Experience slips away -- Time stand still"