Преобразование hex в int64 в PHP - PullRequest
2 голосов
/ 28 марта 2012

Как преобразовать шестнадцатеричное 48ea369a4c120000 в 64-битное целое число 20120214104648 (порядок байтов с прямым порядком байтов) в PHP?

hexdec (), base_convert () и unpack () не помогают.

См. Скриншот ниже.

See screenshot below

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Есть 2 значения 48ea369a4c120000, если учесть endiannes .

Little endian    =        20120214104648
Big endian       =   5254071951610216448

Значение порядка байтов 48ea369a4c120000 можно вычислить следующим образом.

$data="48ea369a4c120000";
$u = unpack("H*", strrev(pack("H*", $data)));
$f = hexdec($u[1]);
echo $f; // 20120214104648

Примечание: Это делается вручную, так как порядковый номер хоста отличается. если у хоста был тот же порядок байтов, достаточно было бы всего одного вызова на hexdec.

0 голосов
/ 28 марта 2012

Вы можете попробовать hexdec () .

$integer = hexdec('48ea369a4c120000'); // $integer is now the decimal version of the number provided.

Обратите внимание, однако, что если результирующее число выходит за границы, чем хранилище платформы (например, 64 бита нужно на 32платформы), тогда вы получите число с плавающей точкой, а не int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...