在PHP中将十六进制转换为int64

时间:2012-03-28 13:40:36

标签: php math conventions number-formatting

如何在PHP中将十六进制48ea369a4c120000转换为64位整数20120214104648(小端字节顺序)?

hexdec(),base_convert()和unpack()没有帮助。

见下面的截图。

See screenshot below

2 个答案:

答案 0 :(得分:3)

如果您考虑endiannes,则48ea369a4c120000有2个值。

Little endian    =        20120214104648
Big endian       =   5254071951610216448

48ea369a4c120000的小端值可以通过以下过程计算。

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

注意:这是手动完成的,因为主机的字节顺序不同。如果主机具有相同的字节序,则只需拨打一次hexdec即可。

答案 1 :(得分:0)

您可以尝试hexdec()

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

但是,请注意,如果结果数超出平台存储的范围(例如32位平台上需要64位),那么您将获得一个浮点数,而不是一个int。