все перемешалось ...
Попытка размешать вещи ...
Предположительно, ваши шестнадцатеричные байты расположены в порядке с прямым порядком байтов, поэтому перед преобразованием вам нужно повернуть вспять.
<?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";