進数変換

メモ。


Bashで行う方法。zshでもできるらしいけど試して無いので不明。

% echo $((0x12))
18


rubyで行う方法。
10進数->10進数
あんまり意味はないけどこれが基本。

p Integer("100") #=> 100
p "100".to_i     #=> 100


2進数->10進数

p Integer("0b00010111") #=> 23
p "00010111".to_i(2)    #=> 23


10進数->2進数

p 23.to_s(2)            #=>"10111"
printf("%b %#b", 23)    #=>"10111 0b10111"


8進数->10進数

p Integer("0123")       #=> 83
p "123".to_i(8)         #=> 83
p "123".oct             #=> 83


10進数->8進数

p 83.to_s(2)            #=>"123"
printf("%o %#o", 83)    #=>"123 0123"

16進数->10進数

p Integer("0xFFF1")     #=> 65521
p "FFF1".to_i(16)       #=> 65521
p FFF1".hex             #=> 65521


10進数->16進数

p 83.to_s(16)            #=>"fff1"
printf("%x %#x", 83)     #=>"ff1 0xfff1"