Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

数値リテラルで遊ぶ

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版