Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

数値リテラルで遊ぶ

Ascii文字である事が自明なら、ワザワザcharメソッドやformatを使わなくとも数値をとる事が出来ます。
たとえばAsciiのアルファベットなら

>>  ?a
=> 97

といった感じで。

C言語ではお馴染みのAscii文字の数値を用いたアルファベット処理も

>> (?z - ?a + 1).times do |z| val = ?a + z; printf "%c : %3d \n", val, val end
a :  97 
b :  98 
c :  99 
d : 100 
e : 101 
f : 102 
g : 103 
h : 104 
i : 105 
j : 106 
k : 107 
l : 108 
m : 109 
n : 110 
o : 111 
p : 112 
q : 113 
r : 114 
s : 115 
t : 116 
u : 117 
v : 118 
w : 119 
x : 120 
y : 121 
z : 122 
=> 26

この通り。

さらに、ruby1.8系以下ならば

>> ?\M-a
=> 225
>> ?\C-a
=> 1
>> (?\M-a) + (?\C-a) - 0b00001111
=> 211
>> printf "%08d\n" , (?\M-a) + (?\C-a) - 0b00001111                                        
00000211
=> nil

という風にMetaやControlも扱えます。

参照もと

たのしいRuby 第3版

たのしいRuby 第3版