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

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

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

  1. 0x12437308CCB6 →20080902065334

2.0x2C9C1227FC6520B →200904012311450123

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

Posted feedbacks - Smalltalk

Squeak Smalltalk で。

Integer のクラスメソッド #readFrom:base: は、第一引数に変換したい文字列のストリームを、第二引数に何進数か指定してコールすることで十進数への変換が可能です。

桁数の制約は特にありません。

なお、文字列の先頭に16進数リテラル記述であることを示す '16r' が付けてある場合は、当該文字列にメッセージ asNumber を送るだけで済ませることもできます。

もちろんリテラルであれば、変換操作自体必要ありません。

1
2
3
4
5
6
7
8
Integer readFrom: '12437308CCB6' readStream base: 16      "=> 20080902065334 "
Integer readFrom: '2C9C1227FC6520B' readStream base: 16   "=> 200904012311450123 "

'16r12437308CCB6' asNumber      "=> 20080902065334 "
'16r2C9C1227FC6520B' asNumber   "=> 200904012311450123 "

16r12437308CCB6      "=> 20080902065334 "
16r2C9C1227FC6520B   "=> 200904012311450123 "

Index

Feed

Other

Link

Pathtraq

loading...