如何在PHP中将十六进制48ea369a4c120000
转换为64位整数20120214104648
(小端字节顺序)?
hexdec(),base_convert()和unpack()没有帮助。
见下面的截图。
答案 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。