16進数から10進数の変換
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 "
|


shojiHIDAKA #8955() Rating1/1=1.00
16進数を10進数に変換してください。
ただし、入出力は文字列とし、次の変換は最低必ずできなければいけないこととします。
2.0x2C9C1227FC6520B →200904012311450123
あわせて、扱える最大の整数も明らかにしてください。
[ reply ]