From: cyross@... Date: 2001-09-15T23:31:50+09:00 Subject: [ruby-list:31463] お知恵を拝借 サイロスです。 ようやく、「プログラミングRuby」の第1部を読み終え、一つオリジナルのメソ ッドを作ろうかと考え、整数クラスの値を0xで始まる16進数の文字列に変換す るメソッドto_xを作りました。 メソッド内では、値が16の何乗かを求め、その乗数でループして各桁の値を求 める様に考えてコーディングしましたが、実際できあがったものを見ると、かな り不細工なものになってしまいました。 できることなら、もっとスマートにしたいのですが、僕の少ない頭脳ではこれが 精一杯です。 MLの皆様、このコードをもっとスマートに実現する方法をご教授お願いします。 class Integer def to_x @HEX = %w(0 1 2 3 4 5 6 7 8 9 a b c d e f) @max = (Math::log10(self) / Math::log10(16)).to_i @str = "0x" @tmp = self.dup @max.downto(0) do |i| @val = @tmp / (16**i) @str += @HEX[@val] @tmp %= 16**i end @str end end a = ?\C-a b = ?\M-a c = ?\M-\C-a print "#{a.to_x}:#{b.to_x}:#{c.to_x}\n" ==============================  サイロス誠  cyross@po.twin.ne.jp  http://www.twin.ne.jp/~cyross/ ==============================