每件事都混在一起......
试图解开这些东西……
大概你的十六进制字节是小端顺序的,所以你必须在转换之前反转。
<?php
$timestamp = hexdec(implode(array_reverse(explode(' ', '2a ba ce 21'))));
echo "seconds: ", $timestamp+946684800, "\n";
echo "readable: ", date('r', $timestamp+946684800), "\n";
如果我必须将 2c 00 转换为以毫秒为单位的上次更新时间以及 2 字节,该怎么办。
转换就像上面一样。如果您想将毫秒加入时间戳,请将它们除以 1000。
$timestamp = hexdec(implode(array_reverse(explode(' ', '2a ba ce 21'))));
$millisecs = hexdec(implode(array_reverse(explode(' ', '2c 00'))));
$timestamp += 946684800 + $millisecs/1000;
echo "seconds: ", $timestamp, "\n";
date_default_timezone_set('UTC');
echo "readable: ", date('Y-m-d H:i:s.', $timestamp).substr("00$millisecs", -3), "\n";