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

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

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

  1. 0x12437308CCB6 →20080902065334

2.0x2C9C1227FC6520B →200904012311450123

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

Posted feedbacks - PHP

PHP 5.1.6

hexdec()ではinteger型の範囲をこえる数値は、float型で返すみたいなので、
gmp_strval()を使いました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// hexdec() ※うまくいかない
$ php -r 'echo hexdec($argv[1]),"\n";' 0x12437308CCB6
20080902065334
$ php -r 'echo hexdec($argv[1]),"\n";' 0x2C9C1227FC6520B
2.0090401231145E+17

// gmp_strval()
$ php -r 'echo  gmp_strval($argv[1]),"\n";' 0x12437308CCB6
20080902065334
$ php -r 'echo  gmp_strval($argv[1]),"\n";' 0x2C9C1227FC6520B
200904012311450123

Index

Feed

Other

Link

Pathtraq

loading...