challenge 16進数から10進数の変換

16進数を10進数に変換してください。

ただし、入出力は文字列とし、次の変換は最低必ずできなければいけないこととします。

  1. 0x12437308CCB6 →20080902065334

2.0x2C9C1227FC6520B →200904012311450123

あわせて、扱える最大の整数も明らかにしてください。

Posted feedbacks - Ruby

String#hex メソッドで変換ができます。 標準入力から入力された値を変換する場合には、以下のようにすればできます。

1
p ARGV.map{|s|s.hex}

Rubyでは数値リテラルとして16進整数表現があるので、そのまま文字列をevalすれば望む値が得られます。出力も文字列という出題なので、to_sで文字列にしています。

参考: リテラル - Rubyリファレンスマニュアル

ちなみにRuby自体には「最大の整数」という制限はなく、メモリの許す限り大きな整数を扱うことができます。

1
2
p eval("0x12437308CCB6").to_s    #=> "20080902065334"
p eval("0x2C9C1227FC6520B").to_s #=> "200904012311450123"

Index

Feed

Other

Link

Pathtraq

loading...